栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java堆术语:young, old and permanent generations?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java堆术语:young, old and permanent generations?

这似乎是一种常见的误解。在Oracle的JVM中,永久生成不是堆的一部分。它是用于类定义和相关数据的单独空间。在Java 6和更早版本中,实习生字符串也存储在永久代中。在Java 7中,插入的字符串存储在主对象堆中。

这是永久世代的好帖子。

我喜欢Oracle 关于JConsole的指南中对每个空间的描述:

对于HotSpot Java VM,用于串行垃圾回收的内存池如下。

  • Eden Space (heap):最初为大多数对象分配内存的池。
  • Survivor Space (heap):包含在Eden空间的垃圾回收中幸存的对象的池。
  • Tenured Generation (heap):包含幸存者空间中已有一段时间的对象的池。
  • Permanent Generation (non-heap):包含虚拟机本身所有反射数据的池,例如类和方法对象。对于使用类数据共享的Java VM,这一代被分为只读和读写区域。
  • Code Cache (non-heap):HotSpot Java VM还包括代码缓存,其中包含用于编译和存储本机代码的内存。

Java使用分代垃圾回收。这意味着,如果你有一个对象foo(它是某个类的实例),则该对象幸存的垃圾收集事件越多(如果仍然有对其的引用),则它得到的推广就越多。它始于年轻一代(本身被划分为多个空间-伊甸园和幸存者),如果生存了足够长的时间,最终将进入终身一代。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456497.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号