首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Permgen空间:有待实现的理想行为

Permgen空间:有待实现的理想行为
EN

Stack Overflow用户
提问于 2013-08-06 09:53:43
回答 1查看 239关注 0票数 0

我正在尝试分析/分析一个核心JAVA应用程序。

我将JConsole与月食垫结合使用。

我在Perm-Gen图表中观察到(在Windows XP计算机上记录的1小时内的数据):

代码-缓存:

  • 开始录音: 7MB
  • 1小时后: 10.5 MB
  • 图看起来:斜线略有上升,每隔一段时间增加。

内存池Perm-Gen(共享-rw):

  • 开始录音: 7MB
  • 1小时后:7 MB
  • 图看起来像:平行于X轴。

内存池Perm-Gen(共享-R0):

  • 开始录音: 5.5MB
  • 1小时后: 5.5MB
  • 图看起来像:平行于X轴。

内存池:

  • 录音开始时间:21兆
  • 1小时后: 22.5 MB
  • 图看起来:斜线略有上升/下降的间隔增加。

我的问题是,

  • 对于上述每一个类别,有什么可以推断出Perm空间的这种行为?
  • 寻找上述每一个类别的理想行为应该是什么?

这里的理想行为指的是一种状态,它代表:

  • 应用程序最多只能执行。
  • 应用程序没有任何与内存相关的问题。
  • 不需要对代码进行任何改进,就可以即兴使用资源。

上述问题也适用于堆空间分析。

以下是补充说明:

  • 这是正确的,分析应该在相同的环境下进行生产。但如果我能理解真正的目标会有帮助。从现在起,我正努力学习同样的东西。以后,我会试着在生产上做。
  • 另外,我还试图比较两个代码基(一个是重构的,一个是旧的)。我想知道通过重构(作为数量数据)所获得的好处的程度。我想,如果我在同一个平台上记录结果,那么比较将是正确的(不管生产还是开发)。

更新1:

  • 我还连续申请了8个多小时。
  • 我使用GCViewer:1.31获取GC信息。
  • 我正在附加从GCViewer收集的数据。
  • 我观察到每隔30秒就会发生一次完整的GC事件。这就得出结论,很多对象都是log-living
  • 我需要更多的信息。我真的不知道如何正确、完整地解释这些细节。

请看附件。请提供投入。

EN

回答 1

Stack Overflow用户

发布于 2013-08-07 15:19:50

有几项建议:

1)沟JConsole。VisualVM包含在JDK中,并且在各个方面都有优势(并且包括一个桥接模式,这样您甚至可以使用旧插件,如果这就是让您一直使用JConsole的唯一原因)。

2)打开GC登录。你至少需要这些旗子:

-Xloggc:(用于更全面的GC日志记录) -XX:+PrintGCDetails (用于更详细的输出) -XX:+PrintTenuringDistribution (显示JVM假定的延长阈值)

找到一个分析日志的工具--您需要注意对象的工作集以及PermGen,即使后者是您最关心的问题。GCViewer是免费的,或者有一些商业工具(完全公开--我为jClarity工作,该公司为此目的生产了Censum工具)。

3)你需要跑一小时以上的时间。许多应用程序在很长一段时间内不会稳定下来。

4)再看一遍你的数字,这看上去不太寻常/问题。为什么要调优JVM的这一部分呢?该制度的哪些方面表明这是一个严重的问题,需要加以研究?你是如何决定这一点的,这个问题是如何表现出来的?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18076886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档