JVM GC的大对象是什么

查理·亨特(Charlie Hunt)在他的演讲中说,大型对象对JVM GC不利。因为:

  1. 大对象的分配和初始化非常昂贵。

  2. 不同大小的大对象可能会导致Java堆碎片化。

如何定义大对象?我怎么知道物体是否是大物体?谢谢

回答:

该定义取决于平台,JVM和JVM配置。例如,以下摘自Michael Kopp

的三篇大型JVM 博客文章

中的“垃圾回收如何不同”

JRockit在分配期间区分大对象和小对象。 对象被视为大对象的限制取决于JVM版本,堆大小,垃圾回收策略和所使用的平台。斜体字

-DL。)通常在2到128

KB之间。如果直接在旧世代中生成世代堆,则将大对象分配在线程本地区域之外。当您开始考虑时,这很有意义。年轻一代使用副本收集。在某个时候,复制对象比遍历垃圾回收中遍历的对象要昂贵得多。

关于第二个问题,我不确定如何获取该阈值,但是特别是在HotSpot中,您可以 设置 它:

-XX:PretenureSizeThreshold=2m

有关此选项和许多其他选项的详细信息,请参阅Alexey Ragozin 的 HotSpot

JVM垃圾回收选项备忘单-XX

以上是 JVM GC的大对象是什么 的全部内容, 来源链接: utcz.com/qa/431397.html

回到顶部