JVM GC的大对象是什么

问题描述

该定义取决于平台,JVM和JVM配置。例如,以下摘自Michael Kopp的三篇大型JVM 博客文章中的“垃圾回收如何不同”

JRockit在分配期间区分大对象和小对象。 对象被视为大对象的限制取决于JVM版本,堆大小,垃圾回收策略和所使用的平台。斜体字 -DL。)通常在2到128 KB之间。如果直接在旧世代中生成世代堆,则将大对象分配在线程本地区域之外。当您开始考虑时,这很有意义。年轻一代使用副本收集。在某个时候,复制对象比遍历垃圾回收中遍历的对象要昂贵得多。

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

-XX:PretenureSizeThreshold=2m

有关此选项和许多其他选项的详细信息,请参阅Alexey Ragozin 的 HotSpot JVM垃圾回收选项备忘单-XX

解决方法

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

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

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

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

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”