当前位置: 首页 > 知识库问答 >
问题:

Java 7中的幸存者大小是多少

訾高明
2023-03-14

我有一个JVM进程,最大1024 MB堆大小的核心转储。(OpenJDK 7 on linux)

当我使用YourkitJavaProfiler 10.0.6分析核心转储文件时,我发现进程仅在内存不足时使用803 MB堆。

似乎两个幸存者堆使用了堆的2/9(或保留)。

我在Windows7上用JDK7进行了测试,jvisualvm(带有Visual GC插件)显示一个幸存者的大小是伊甸园大小的1/3。

参数是:java-Xms512M-Xmx1024M-XX:UseParallelGC-XX:UseparallelloldGC-XX:MaxGCPauseMillis=10000-XX:UseCompressedOops

但是当我在互联网上搜索时,它说默认的幸存者大小是伊甸园大小的1/8。

我不知道为什么我的测试只有1/3。

共有1个答案

安博文
2023-03-14

在java中新创建的对象将被放置一个名为Eden空间的内存空间。每当伊甸园空间被填满时,JVM都会触发一些称为次要GC的东西。在次要GC中幸存下来的物体将被移动到一个名为幸存者空间的地方。幸存者空间的大小称为幸存者大小。

您可以使用 -XX:SurvivorRatio=N 参照伊甸园空间调整幸存者大小。您的默认幸存者比率为 8。

 类似资料:
  • 我正在开发一个完全用Java编写的内存数据库。我们有一个输入源,它向系统提供数据,这是提取/加载阶段。在运行这个过程中,我注意到JVM挂起了,根本原因是GC被触发了。然后应用程序冻结,随后出现OutOfMemory错误(超过GC开销限制) 检查GC日志发现了大量的垃圾收集,既有年轻的,也有老的。令人惊讶的是,希望的幸存者规模是负数。我在试着理解为什么会这样?以前有人遇到过这个吗? 环境: null

  • 问题内容: 我有一个,我想知道它正在使用多少内存。 的是变体是这样,它不是那么容易,因为乘法每一个对象的大小的数组中的元素数目。 问题答案: 您可以使用诸如此类的对象及其对应对象来进行有根据的猜测,但这并不考虑两次调用之间通过GC处理的对象。

  • 尝试查找这个,但是我遇到的所有问题/答案都谈到了拥有2个幸存者空间的目的。我想了解拥有幸存者空间的一般目的。将物体从伊甸园移动到幸存者有什么好处?

  • 我们的服务器应用程序似乎在一段时间内表现正常,但过了一段时间后,生存空间将填满100%,从那时起,堆使用量增加,GC周期(次要和主要)变得越来越频繁,最终堆耗尽。 这是“jstat-gcutil”的一部分 我的问题是这种应用程序行为背后的主要原因是什么?是太小的年轻空间或堆,其他一些JVM参数,还是只是一个普通的旧内存泄漏? 解决这个问题的最佳策略是什么,GC调优还是应用程序重构? JDK 1.6

  • 本文向大家介绍MongoDB中文档的最大大小是多少,包括了MongoDB中文档的最大大小是多少的使用技巧和注意事项,需要的朋友参考一下 该文档是集合中的记录。每个文档的大小限制为16 MB。文档包裹在大括号({})中。 让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出-

  • 问题内容: 众所周知,java使用以下数据类型 如果我创建一个像 现在的问题是大小尺寸是。请以适当的理由给我澄清。 谢谢, Anil Kumar C 问题答案: 对象的内存大小取决于体系结构,主要取决于VM是32位还是64位。实际的VM实施也很重要。 对于每个对象,您需要为其对象标头(在64位VM上通常为2 * 8字节),其字段(根据VM的实现需要额外的对齐空间)的空间。然后将最后的空间四舍五入到