Skip to Content

JVM堆

Heap (堆),通过new关键字创建的对象都会使用堆内存

  • 它是线程共享的,堆中对象都需要考虑线程安全的问题
  • 有垃圾回收机制

堆内存溢出

java.lang.OutofMemoryError :java heap space :堆内存溢出

设置堆空间大小: -Xmx2m

/** * 演示堆内存溢出 java.lang.OutOfMemoryError: Java heap space * -Xmx8m ,最大堆空间的jvm虚拟机参数,默认是4g */ public class main1 { public static void main(String[] args) { int i = 0; try { ArrayList<String> list = new ArrayList<>();// new 一个list 存入堆中 String a = "hello"; while (true) { list.add(a);// 不断地向list 中添加 a a = a + a; i++; } } catch (Throwable e) {// list 使用结束,被jc 垃圾回收 e.printStackTrace(); System.out.println(i); } } }

堆内存诊断

jps 工具

查看当前系统中有哪些 java 进程

jmap 工具

查看堆内存占用情况 jmap - heap 进程id

jconsole 工具

图形界面的,多功能的监测工具,可以连续监测

jvisualvm 工具

可视化的展示虚拟机的内容

Last updated on