JProfile_help.pdf_学习笔记_04

 

找到内存弱点,不像C/C++,Java 有一个垃圾回收器去释放所有没有被引用的实例,这意味着在Java里面没有经典的内存泄露问题,然而,如果对象只在一个地方被用到,这看起来很简单,但在很多真实的系统里对象被传输了许多层,每一层都回给对象增加一个持久的引用,有些时候这个看起来很简单 ,对象应该被垃圾回收器收集,然而在系统不同部分的调用传递一个对象作为参数会导致对象处于一种“逃避”,如果调用方故意或错误的继续持有对象的引用在调用完成,通常,过量的缓存和设计错误都是内存泄露的原因。

      认识内存泄露

      第一步监测内存泄露是去看看 堆内存和对象监测视图,如果有问题的话,图表会显示一个尽可能震荡的线形图,如果没有这种图,你的程序可能只是简单的消耗了大量的内存,这不是泄露问题,简单的方法就是找到数组或类,尝试去减少他们的实例的数量。  

     最直接的方法就是在 对象视图和 已监测的对象视图里找到实例最多的类,再切换到分配热点视图找到是那个方法导致了大量实例创建的内存消耗,然后就可以分析方法了。  详细参见地址:  http://peacherdiy.iteye.com/admin/pictures   5张图片分别按序号 JProfile_*_01------JProfile_*_05

 

---------P 31

 

你可能感兴趣的:(C++,c,C#)