本帖最后由 jiangguilong2000 于 2013-04-19 17:42:46 编辑

解决方案 »

  1.   

    jprofiler 可以看到所有内存消耗吗?
      

  2.   

    问题1:top的RES值和JAVA堆内存之间到底是一个什么关系?
    ——大概1、2个月有个帖子讨论过,挺长的,不过一下子找不到了;总的来说,两者很难找到非常精确匹配的计算关系,因为两者统计的口径是不同的;操作系统关心的是被应用程序所占用的,而JVM则只是关心堆中被分配出去的;这里面有JVM自己开销的、有碎片内存无法使用的、还有已使用完毕待回收的 等等问题。
    ——总的来说,我觉得如果不是为了底层开发之类的问题,不值得在此问题进行深入研究。
    问题2:如何定位JAVA进程直接内存的泄漏?
    ——很遗憾,并没有什么招数来直接定位,否则内存泄露就不会是一个让大家闻风丧胆的问题了;各类工具都只是提供给你一定的手段去发现征兆、缩小怀疑范围,没有说直接帮你定位,那听起来就不是IT而是神话了。
    ——常规招数就是:范围 与 层次,两个方向不断通过测试和监控来缩小 怀疑范围,从而最终定位内存泄漏点。