随笔分类 -  JVM

摘要:1、堆介绍 一个JVM实例只需要一个堆内存,堆内存的大小是可以调节的。类加载器在读取类文件之后,需要把类、方法、常变量放在堆内存中,保存所有引用类型的真实信息,以Execution Engine执行。 堆逻辑上由“新生区+养老区+元空间”三部分组成,物理上由“新生区+养老区”两部分组成。 新生区是类 阅读全文
posted @ 2021-01-27 15:58 又又又8 阅读(270) 评论(0) 推荐(0) 编辑
摘要:HotSpot VM 目前使用最广泛的虚拟机 HotSpot使用指针的方式来访问对象 Java堆中会存放访问类的元数据(元数据:描述数据的数据,即模板)地址 reference直接存储对象的地址 阅读全文
posted @ 2021-01-27 12:20 又又又8 阅读(100) 评论(0) 推荐(0) 编辑
摘要:栈管运行,堆管存储 Java栈在线程创建时创建,它的生命周期跟随线程的生命周期,线程结束占内存也就释放 线程私有,不存在垃圾回收机制 8种基本类型的变量+对象的引用类型+实例方法都是在函数的栈内存中分配的 栈帧(方法压入栈之后叫栈帧)中主要存储3类数据: 本地变量:输入参数和输出参数以及方法内变量 阅读全文
posted @ 2021-01-27 11:35 又又又8 阅读(72) 评论(0) 推荐(0) 编辑
摘要:方法区绝不是放方法的地方,它存储一个类的结构信息 方法区是一种规范,在不同虚拟机中的实现不一样,最典型的就是永久代和元空间 Java 7中:方法区 f = new 永久代(); Java 8中:方法区 f = new 元空间(); 阅读全文
posted @ 2021-01-27 09:58 又又又8 阅读(56) 评论(0) 推荐(0) 编辑
摘要:每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向下一条指令的地址,也是即将要执行的指令代码),由执行引擎读下一条指令,是一个非常小的内存空间,几乎可以忽略不计。 这块内存区域很小,它是当前线程所执行的字节码的行号指示器,字节码解释器通过改变这个计数器的值 阅读全文
posted @ 2021-01-18 22:15 又又又8 阅读(114) 评论(0) 推荐(0) 编辑
摘要:public class Main { public static void main(String[] args) { Thread thread = new Thread(); thread.start(); thread.start(); } } //IllegalThreadStateExc 阅读全文
posted @ 2021-01-18 21:57 又又又8 阅读(148) 评论(0) 推荐(0) 编辑
摘要:1、什么是类加载器 类加载器负责加载class文件,class文件在文件的开头有特定的文件标识,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构。 Class Loader只负责class文件的加载,至于他是否可以运行,则由Execution Engine决定。 并 阅读全文
posted @ 2021-01-18 20:59 又又又8 阅读(76) 评论(0) 推荐(0) 编辑