程序计数器
虚拟机栈
本地方法栈
堆 (新生代和老生代) 新生代(eden,two survivor) 老生代(永久代(现在变成元数据))
元数据->类的字节流,常量,静态方法 (metaSpace的默认值在64位中20.75M)当第一次满的时候回触发GC;
GC的算法: 引用计数法,标识清理法,复制算法,标记-整理算法,分代收集算法,系统线程划分(串行收集器,并行收集器,并发收集器),根搜索算法(设立若干种根对象,当任何一个根对象到某一个对象均不可达时,则认为这个对象是可以被回收的。)
其中根搜索方法的根如下:
1、栈(栈帧中的本地变量表)中引用的对象。
2、方法区中的静态成员。
3、方法区中的常量引用的对象(全局变量)
4、本地方法栈中JNI(一般说的Native方法)引用的对象。
对象内存的结构:头对象(markword和klass)(markword:用于存储对象自身的运行时数据) (klass 指向元空间数据的指针)(64位markword和kclass为8个字节,32位markword和kclass为4个字节)
实例数据,填充对齐(整个对象必须是8个字节的倍数)数组长度(为4个字节)