问题描述
查理亨特说,他的中的大型对象对JVM GC不利。 。因为:-
大对象分配和初始化代价昂贵。
>
如何定义大对象?>
大对象的大小不同会导致Java堆分页。我怎么知道对象是否是大对象?谢谢
定义取决于平台,JVM和JVM配置。例如,这里是摘自由Michael Kopp发布: p> 大小对象
JRockit在
分配期间区分大对象和小对象。 对象被视为大的限制取决于JVM版本的
,堆大小,垃圾收集策略以及所用平台的
。( italics em> mine - DL)。它通常在2到128 KB之间。如果直接在旧代中生成
世代堆,大型
对象将分配在线程局部区域之外。当你开始思考这个问题时,这会让你感觉到很多
的感觉。年轻一代使用
副本收藏。在某些时候,复制一个对象比在垃圾收集中遍历它更贵
。
对于第二个问题,我我不确定如何获得该阈值,但特别是在HotSpot中,您可以设置它:
-XX:PretenureSizeThreshold = 2m
请参阅由阿列克谢Ragozin关于此和许多其他许多的详细信息 - XX
选项。
Charlie Hunt says that large object is bad for JVM GC in his presentation. Because:
Large objects are expensive to allocate and initialize.
Large objects of different sizes can cause Java heap fregmentation.
How to define large object? How can I know if the object is large object? Thanks
The definition depends on the platform, JVM and JVM configuration. For instance, here is as excerpt from How Garbage Collection differs in the three big JVMs blog post by Michael Kopp:
To your second question, I am not sure how to obtain that threshold, but specifically in HotSpot you can set it:
-XX:PretenureSizeThreshold=2m
Refer to the HotSpot JVM garbage collection options cheat sheet by Alexey Ragozin for details on this and many many other -XX
options.
这篇关于什么是JVM GC的大对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!