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

“压实烫发”值代表什么?

南宫才艺
2023-03-14

我正在调查一个生产系统上的JVM崩溃,以下内存值在下面的hs\u err\u pid日志文件片段中代表什么?

Heap
 par new generation   total 1258624K, used 955445K [0x00000005c0000000, 0x00000006155b0000, 0x000000066aaa0000)
  eden space 1118784K,  73% used [0x00000005c0000000, 0x00000005f1e52598, 0x0000000604490000)
  from space 139840K,  98% used [0x000000060cd20000, 0x00000006153db100, 0x00000006155b0000)
  to   space 139840K,   0% used [0x0000000604490000, 0x0000000604490000, 0x000000060cd20000)
 tenured generation   total 2796224K, used 1745107K [0x000000066aaa0000, 0x0000000715550000, 0x00000007c0000000)
   the space 2796224K,  62% used [0x000000066aaa0000, 0x00000006d52d4d90, 0x00000006c2e0c400, 0x0000000715550000)
 compacting perm gen  total 482944K, used 482943K [0x00000007c0000000, 0x00000007dd7a0000, 0x0000000800000000)
   the space 482944K,  99% used [0x00000007c0000000, 0x00000007dd79fff0, 0x00000007dd7a0000, 0x00000007dd7a0000)
No shared spaces configured.

我关心的是“压缩perm-gen”的用法:它是指最大分配perm-gen堆的使用百分比,还是最大堆的使用百分比,或者其他什么?提供的百分比似乎是已用/总百分比的一部分,这是分配的总perm gen吗?由于我们的-XX:MaxPermSize设置为1GB。。。

是否有任何有用的资源(除了Oracle白皮书,它没有提到hs_err文件)来解释在JVM崩溃中转储的数据?


共有2个答案

戚鸿
2023-03-14

但仅仅因为您将MaxPermSize设置为1GB,并不意味着HotSpot将遵守它。我认为我从未获得超过512MB的数据。JVM的482MB非常接近这个数字。

无论如何,512MB对于PermGen来说已经足够了,因为它只用于保存类的元数据,除非通过ClassLoader加载更多的类,否则它的大小不会增长。所以问题是:您真的需要超过512MB来保存内存中所有必要类的字节码大小吗?

很可能您的系统在PermGen中确实存在内存泄漏。

郑曜灿
2023-03-14

我从未找到准确描述“压实perm gen”值的参考文献,但我们自己的调查证明,报告的值为:

当前使用的永久发电机/当前分配的永久发电机

在我问题中的示例中,这意味着已经为PermGen分配了482944K内存,其中482943K已在GC点使用(99%)。我们的最大PermGen大小设置为1048576K(1GB),因此收集过程有大量保留资源可重新分配。

对于那些遇到类似问题的人,我们最终解决了问题。在我们的例子中,它原来是一个利用太阳的第三方图书馆。其他。不安全类,当使用不当时,它是出了名的“不安全”。

在本例中,克隆对象的一段逻辑将特定的类加载器传递给了某个sun。其他。复制对象的不安全操作。在某些机器上,复制的对象经常在损坏状态下创建。当JVM试图进行垃圾收集时,它最终会捕获其中一个坏对象并崩溃。这总是导致我的问题中描述的错误。

 类似资料:
  • 问题内容: 我对Heap,Young,Tenured和Perm一代感到困惑。 谁能解释一下? 问题答案: Java垃圾收集器被称为分 代垃圾收集器 。应用程序中的对象生存的时间长短不一,具体取决于它们的创建位置和使用方式。此处的主要见解在于,针对短期和长期对象使用不同的垃圾回收策略,可以针对每种情况专门优化GC。 松散地说,当对象在新 世代中 “生存”重复的垃圾回收时,它们将迁移到 终身代 。该

  • 替换中国大陆主流视频网站的 Flash 播放器为 HTML5 播放器 使用 Mac 的同学都可能碰到过在线看视频引起机子风扇狂转、机身发烫等情况,这是因为 Flash 占用了过多系统资源的缘故。 目前主流视频网站(包括但不限于 优酷、土豆、奇艺、搜狐、QQ、56 等)都支持 iOS 设备的在线播放,同时使用非 iOS 设备访问则会使用默认的 Flash 播放器。 这个 Chrome 浏览器的扩展原

  • 在OSX上安装java,scala scalding之后,当我尝试运行WordCountJob文件时,出现以下错误 编译wordcountjob.scala scalac-classpath/users/me/.sbt/boot/scala--2.9.3/lib/scala-library.jar:/drive/me/coding/scalding/scalding-core/target/sca

  • 问题内容: Java内存空间(Perm空间,Space Stack,堆空间)之间有什么区别? JVM什么时候使用一个或另一个? 如果我使用Scala / Groovy / etc等,会有区别吗? 问题答案: 只是 堆空间:所有活动对象都分配在这里。 堆栈空间:在方法调用或变量实例化中存储对对象的引用以获取变量。 烫发空间:存储已加载的类信息 例如: 执行完上述行之后,内存状态将是这样。 堆:存储“

  • 问题内容: 我目前正在阅读Deitel的有关Java的书,并在他们的一个程序中遇到了以下代码: 如标题所示,“。2f”前面的“ $%”代表什么?我已经知道.2f是什么意思。 问题答案: 该字在这里是指没有什么特别的。它只是显示在字符串中的文字。该角色需要它的通常含义在这里-用一个值来代替(这里,有2位小数)。 请注意,字符可能在字符之后具有含义。有关详细信息,请参见javadocs 的“参数索引”

  • 问题内容: 今天在bash shell脚本中,我注意到脚本末尾的以下命令。我知道是什么,但是我不知道破折号的重要性。 这是什么意思?Google天真地将其截断,因此我找不到答案。 问题答案: 如果将单破折号指定为参数,它将替换为的值。 在被设定的命令,这是以前的工作目录。