【问题标题】:How to derive conclusions from these profiler results如何从这些分析器结果中得出结论
【发布时间】:2012-10-17 13:36:01
【问题描述】:

我正在运行一个 mule 2.2.1 独立服务器并使用 yourkit 对其进行分析。我正在尝试分析分析器的输出,如果有人可以帮助阅读结果,我将不胜感激。

大约 99% 的堆空间被 String 和 char[] 消耗,这正常吗?我应该调查一下吗?

PS Old Gen 使用了 3.4 GB 堆空间中的 2.7 GB。我应该如何解释这个?从来没有

在 GC 部分它告诉我它在 GC 中花费了 20% 的时间,但是我没有看到任何次要或主要的集合,我应该如何阅读这个?

谢谢

【问题讨论】:

    标签: java garbage-collection profiling heap-memory


    【解决方案1】:

    About 99% of the heap space is consumed by String and char[] is this normal ?

    您应该打开参考屏幕并检查谁持有这些Stringschar[]如果是您的某些应用程序类,它肯定是异常的。在这种情况下,请重新访问您的代码并确保您的对象引用被释放以进行垃圾回收。

    The PS Old Gen consumes 2.7 GB of the total 3.4 GB heap space used.

    使用这么多堆空间听起来并不正确。如果您有大量应用程序并通过设计缓存大量数据,那么它可能没问题。如果没有,您的对象引用应该为您提供why 的清晰图片。一旦你知道原因(不需要的对象引用),然后清除它们。

    可能的内存泄漏:

    在非内存泄漏屏幕中,它不是很清楚,但看起来图形最终(总体)上升了。请在更长的时间内查看您的数据,忽略峰值,并确保它不会上升。如果它在上升,那么您的应用程序代码中可能存在一些内存泄漏。

    希望这会有所帮助。

    【讨论】:

    • “你应该打开参考屏幕并检查谁持有这些”我找不到这个标签。我如何追踪对这些字符串的引用?不,应用程序本身不会缓存太多数据。 “在非内存泄漏屏幕中”你的意思是非堆选项卡吗?关于 GC 行为的任何想法?
    • 您指的是来自yourkit.com/docs/11/help/paths.jsp 的“来自GC 根的路径”之类的东西。根据您的经验,这种行为是否会导致应用程序暂停 2-3 秒?
    • @Sudarshan:是的。检查您的应用程序类是否出现在路径中。高内存依赖性和内存泄漏确实会导致应用程序的性能下降。
    • 对于 gc 行为可能是我们的士兵 gc 但不能因为强引用?
    • @Sudarshan 这是可能的,但体积小。您也可以force run the garbage collection 确保在分析之前释放所有免费对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    相关资源
    最近更新 更多