Java虚拟机JVM详解

一.JVM内存管理

1.1JVM运行时数据区

1.1.1程序计数器:记录当前线程正在执行的字节码指定的地址(行号)

为什么需要它:程序容易被打断

1.1.2虚拟机栈:存储当前线程运行方法时所需要的数据、指令、返回地址

1.1.3本地方法栈:和虚拟机栈类似,存储的是native方法

1.1.4方法区:类信息、常量(1.7移至堆)、静态变量、JIT(编译好的代码等数据 1.7移至堆)

1.1.5堆:存放所有实例对象和数组

设置:启动时分配的内存:-Xms,最大内存 -Xmx

1.2JVM内存模型

1.3JVM垃圾回收(GC)

判断对象是否存活

内存泄漏:对象没有被回收 例:对象出栈时没有置空

内存溢出:内存不够了

1.4JDK提供的工具

jps 虚拟机进程状况

jstat 虚拟机统计信息监控工具

jmap Java内存映像区域

jstack Java堆栈跟踪工具

jconsole Java监视与管理控制台

猜你喜欢

转载自www.cnblogs.com/lingluo2017/p/10228909.html