当前位置: 首页 > 面试题库 >

JVM GC的大对象是什么

宿文栋
2023-03-14
问题内容

查理·亨特(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



 类似资料:
  • 问题内容: 是什么导致内存中单个对象的大小? 我知道原语和引用会,但是还有其他吗?方法的数量及其长度是否重要? 问题答案: 这完全取决于实现,但是有一些因素会影响Java中的对象大小。 首先,Java对象中字段的数量和类型肯定会影响空间使用,因为您至少需要拥有容纳该对象所有字段所需的存储空间。但是,由于填充,对齐和指针压缩的优化,没有直接公式可用于精确计算以这种方式使用了多少空间。 对于方法,通常

  • 我正在尝试对函数返回的值发出警报,并且在警报中得到以下信息: 下面是JavaScript代码: 是我试图检查的函数。

  • 问题内容: 运行python脚本时出现此错误: 我很确定’str’是字符串,但是我不知道’NoneType’对象是什么。我的脚本在第二行开始,我知道第一个行之有效,因为该行的命令符合我的期望。起初我以为可能是因为我在send_command中使用了变量和用户输入。 “ CAPS”中的所有内容都是变量,“小写”中的所有内容都是从“ parser.add_option”选项输入的。 我正在使用pexp

  • 问题内容: 每当我学习垃圾收集器时,都会听到术语“对象图”。到底是什么意思? 问题答案: 对象具有对其他对象的引用,这些对象又可以具有对更多对象(包括起始对象)的引用。这将创建对象图,在可及性分析中很有用。例如,如果起始对象是可到达的(例如,它在线程的本地堆栈中),则图形中的所有对象都是可到达的,并且确切的垃圾收集器无法收集任何这些对象。同样,如果我们创建所有可到达对象的列表,则从一组活动对象(根

  • 本文向大家介绍什么是JavaScript中的arguments对象?,包括了什么是JavaScript中的arguments对象?的使用技巧和注意事项,需要的朋友参考一下 JavaScript中的Arguments对象是一个对象,代表执行函数的参数。它的语法有两个参数: 示例 您可以尝试运行以下代码来了解什么是JavaScript中的arguments对象