代码之家  ›  专栏  ›  技术社区  ›  David G

如何诊断Java程序导致的C内存泄漏?

  •  6
  • David G  · 技术社区  · 16 年前

    我正在开发一个大型应用程序(300K LOC),它导致sun1.6jvm(1.6u05)中出现内存泄漏。分析Java显示没有泄漏。JVM是否提供了任何可能检测泄漏原因的诊断?
    我还不能创建一个简单的、孤立的Java测试用例。只有在JVM上使用C堆分析器才能解决这个问题吗?
    应用程序创建一个套接字池,并执行大量的网络I/O操作。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Alireza    8 年前

    一些探查器(如profiler4j)可以显示托管和非托管内存(活动曲线)。然后你可以看看你是否有泄漏和泄漏发生的时间。但是你找不到更多的信息。

    1. 您可以使用活动曲线隔离问题并创建一个更简单的测试,直到找到问题的原因。
      1. 从未启动的类线程实例。
      2. 从不关闭的ODBC桥对象
        2
  •  0
  •   Alireza    8 年前

    http://valgrind.org/ ),如果您在它支持的系统上执行它。真是太棒了!