- 3
- 0
- 约3.45千字
- 约 10页
- 2018-10-15 发布于江苏
- 举报
使用MAT工进行内存溢出定位及分析
内存溢出监控及分析问题所在
内存溢出内存泄漏的名词解释
内存溢出(out of memory):就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。
内存泄露(memory leak):是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
何时会抛出内存溢出错误
何时会抛出Out Of MemoryException,并不是内存被耗空的时候才抛出
JVM98%的时间都花费在内存回收
每次回收的内存小于2%
? 满足这两个条件将触发OutOfMemoryException,这将会留给系统一个微小的间隙以做一些Down之前的操作,比如手动打印Heap Dump。
?Q:为什么崩溃前垃圾回收的时间越来越长?
?A:根据内存模型和垃圾回收算法,垃圾回收分两部分:内存标记、清除(复制),标记部分只要内存大小固定时间是不变的,变的是复制部分,因为每次垃圾回收都有一些回收不掉的内存,所以增加了复制量,导致时间延长。所以,垃圾回收的时间也可以作为判断内存泄漏的依据
?Q:为什么Full GC的次数越来越多?
?A:因此内存的积累,逐渐耗尽了年老代的内存,导致新对象分配没有更多的空间,从而导致频繁的垃圾回收
?Q:为什么年老代占用的内存越来越大?
?A:因为年轻代的内存无法被回收,越来越多地被Cop
原创力文档

文档评论(0)