Java堆术语:年轻一代、老年一代和永久一代?
我试图理解Java堆术语中年轻、老和永久代的概念是什么,更具体地说是三代之间的交互 我的问题是:Java堆术语:年轻一代、老年一代和永久一代?,java,garbage-collection,jvm,heap-memory,Java,Garbage Collection,Jvm,Heap Memory,我试图理解Java堆术语中年轻、老和永久代的概念是什么,更具体地说是三代之间的交互 我的问题是: 年轻一代是什么 什么是老一代 什么是永久的一代 这三代人是如何相互影响/联系的 Java虚拟机分为三代:年轻一代、老一代和永久一代。大多数对象最初是在年轻一代中分配的。旧一代包含在一些年轻一代集合中幸存下来的对象,以及一些可以直接在旧一代中分配的大型对象。永久生成包含JVM认为便于垃圾收集器管理的对象,例如描述类和方法的对象,以及类和方法本身。这似乎是一个常见的误解。在Oracle的JVM中,永久
- 年轻一代是什么
- 什么是老一代
- 什么是永久的一代
- 这三代人是如何相互影响/联系的
- Eden空间(堆):最初分配内存的池 对于大多数对象
- 幸存者空间(堆):包含幸存对象的池 伊甸园的垃圾收集 空间
- 永久生成(堆):包含已存在对象的池 在幸存者空间里呆了一段时间
- 永久生成(非堆):包含所有反射 虚拟机本身的数据, 例如类和方法对象。具有 使用类数据共享的Java虚拟机, 这一代人分为 只读和读写区域
- 代码缓存(非堆):HotSpot Java VM还包括一个代码缓存, 包含用于存储的内存 本机数据的编译与存储 代码
- 伊甸园空间:使用新关键字创建对象时分配的内存 在这个空间上
- 幸存者空间:这是一个池,其中包含有 从Eden空间收集java垃圾后幸存下来
- 永久空间:此内存池包含在多次垃圾收集后幸存的对象,表示从幸存空间进行垃圾收集后幸存的对象
主要区别在于元空间可以动态地重新调整大小,即它可以在运行时扩展。
Java元空间:无界(默认) 代码缓存(虚拟或保留):如果您使用的是HotSpot Java VM,这包括包含用于编译和存储本机代码的内存的代码缓存区域
SunHotSpot JVM中的内存分为三代:年轻一代、老一代和永久一代
- 年轻一代:新创建的对象分配给年轻一代
- 旧一代:如果新对象请求更大的堆空间,它将直接分配到旧一代中。同时,在几个GC周期中幸存下来的对象将升级到旧一代,即旧一代中的长寿命对象
- 永久生成:永久生成保存JVM认为便于垃圾收集器管理的对象,例如描述类和方法的对象,以及类和方法本身