性能分析之内存泄露

内存长期占用并导致系统不稳定一般有两种可能:

1.对象被大量创建而且被缓存,在旧的对象释放前又有大量新的对象被创建使得内存长期高位占用。

  • 表现为:内存不断被消耗、在高位时也很回归到地位,有大量的对象在不断的创作,经过很长时间后又被回收。例如:在HttpSession中保存了大量的分页查询数据,而HttpSession的会话超时时间设置过长(例如:1天),那么在旧的对象释放前又有大量新的对象在第二天产生。
  • 解决办法:对共享的对象可以采用池机制进行缓存,避免各自创建:缓存的临时对象应该及时释放:另一种办法就是扩大系统的内存容量。

2. 另一种情况就是内存泄露问题

  • 表现为:内存回收低位点不断升高(以每次内存回收的最低点连成一条直线,那么它是一条上升线):内存回收的频率也越来越高,内存占用也越来越高,最终出现“Out of Memory Exception”的系统异常。
  • 解决办法:定位那些有内存泄露的类或对象并修改完善这些类以避免内存泄露。方法是:经过一段时间的测试、监控,如果某个类的对象数目屡创新高,即使在JVM Full GC后依然数目降不下来,这些对象基本上是属于内存泄露的对象了。

posted @ 2016-03-22 16:26  TingJie  阅读(188)  评论(0)    收藏  举报