基本概念
Heap 堆
- 通过new关键字,创建对象都会使用堆内存
- 它是线程共享的,堆中对象都需要考虑线程安全的问题
- 有垃圾回收机制GC
堆的内存溢出
当不断产生对象,且一直在使用,就会导致无法回收,造成内存溢出。
public class HeapOOM {
static class OOMObject {
}
public static void main(String[] args) {
List<OOMObject> list = new ArrayList<OOMObject>();
while (true) {
list.add(new OOMObject());
}
}
}
堆内存诊断
1、jps工具
- 查看当前系统中有哪些Java进程
2、jmap工具
- 查看堆内存占用情况
3、jcnsole工具
- 图形界面,多功能的监测工具,可以连续监测