一、Program Counter Register 程序计数器(寄存器)
作用:记住下一条
jvm
指令的执行地址
特点:
是线程私有的
不会存在内存溢出
二、Java Virtual Machine Stacks (Java 虚拟机栈)
java.lang.StackOverflowError(错误提示)
-Xss256k(设置栈内存大小)
栈内存并不是划分的越大越好,通常只是能够进行更多次的方法递归调用,而不会加快运行的效率,反而会影响线程数目的减少。
1.线程安全
2.栈内存溢出
2.1 栈帧过多导致栈内存溢出(方法的递归调用)
2.2 栈帧过大导致栈内存溢出
三、线程运行诊断
四、本地方法栈
为本地方法的运行提供一个内存空间
五、堆
5.1 堆内存溢出
错误提示(java.lang.OutOfMemoryError)
5.2 堆内存诊断
1. jps 工具
查看当前系统中有哪些 java 进程
2. jmap 工具
查看堆内存占用情况 jmap - heap 进程id
3. jconsole 工具
图形界面的,多功能的监测工具,可以连续监测