JVM的内存模式

Posted jimmy03

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM的内存模式相关的知识,希望对你有一定的参考价值。

程序计数器

虚拟机栈

本地方法栈

堆 (新生代和老生代) 新生代(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个字节)

以上是关于JVM的内存模式的主要内容,如果未能解决你的问题,请参考以下文章

面试相关之 JVM &设计模式

面试篇:Java的线程安全单例模式JVM内存结构等知识梳理

Java-100天知识进阶-JVM内存-知识铺

JVM之内存分配与回收策略

Java多线程volatile关键字

java之jvm