JVM
一枝会思想的芦苇
这个作者很懒,什么都没留下…
展开
-
垃圾收集
整理自《深入理解 Java 虚拟机》。目录1. 方法区的回收常量池的回收无用的类的回收2. Java 堆的回收3. 垃圾收集算法标记-清除算法复制算法标记-整理算法分代收集算法4. 垃圾收集器程序计数器、虚拟机栈、本地方法栈这几个区域不需要过多考虑回收问题,因为方法结束或线程结束时,内存自然就随着回收了。垃圾收集关注的是 Java 堆和方法区这部分内存。1. 方法区的回收HotSpot 虚...原创 2019-08-03 18:00:38 · 172 阅读 · 0 评论 -
Java 内存区域与内存溢出
目录Java 内存区域1. 程序计数器2. 虚拟机栈3. 本地方法栈4. 堆5. 方法区内存溢出1. 堆溢出2. 虚拟机栈和本地方法栈溢出Java 内存区域Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为各个不同的数据区域,包括以下几个部分:1. 程序计数器线程私有,是当前线程所执行的字节码的行号指示器。字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码...原创 2019-07-31 10:58:26 · 115 阅读 · 0 评论 -
对象的分配、布局、访问过程
整理自《深入理解 Java 虚拟机》。目录1. 对象的创建2. 对象的内存布局3. 对象的访问定位1. 对象的创建虚拟机遇到一条 new 指令时,将执行以下过程:检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,必须先执行相应的类加载过程。分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间...原创 2019-07-31 11:47:19 · 128 阅读 · 0 评论 -
内存分配与回收策略
整理自《深入理解 Java 虚拟机》。目录1. 对象优先在Eden分配2. 大对象直接进入老年代3. 长期存活的对象将进入老年代4. 动态对象年龄判定5. 空间分配担保对象的内存分配,大方向上讲,就是在堆上分配,对象主要分配在新生代的 Eden 区上,如果启动了本地线程分配缓冲,将按线程优先在 TLAB 上分配。少数情况下也可能会直接分配在老年代中,分配规则并不是百分百固定,其细节取决于当前使...原创 2019-08-05 15:49:09 · 103 阅读 · 0 评论 -
虚拟机类加载机制
整理自《深入理解 Java 虚拟机》。目录1. 类加载时机2. 类加载的过程2.1 加载2.2 验证2.3 准备2.4 解析2.5 初始化3. 类加载器1. 类加载时机虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化。最终形成可以被虚拟机直接使用的 Java 类型,就是虚拟机的类加载机制。一个类从被加载进内存,到卸载出内存,完整的生命周期包括:加载,验证...原创 2019-08-06 17:46:32 · 144 阅读 · 0 评论