一、概念
堆是Java虚拟机内存结构中的一部分。通过new关键字创建的对象都会分配在堆中。堆中的对象是线程共享的,需要考虑线程安全问题,堆中有垃圾回收机制。
二、堆内存溢出
虽然堆中有垃圾回收机制,但是如果当堆中的数据都仍需要使用,便不能被回收。因此大量的数据是有可能造成堆内存溢出的。
三、堆内存诊断工具
- jps:查看当前系统中有哪些Java进程
- jmap:查看堆内存占用的情况 jmap -heap pid
- jconsole:可视化工具
- jvisualvm:一个功能强大的Java应用程序监控、分析和调试工具,提供了丰富的可视化界面和插件机制,帮助用户更好地了解和管理Java应用程序的运行状态,优化应用程序的性能。