2.1 JVM运行流程:
public class JVMObject {public final static String MAN_TYPE = "man"; // 常量public static String WOMAN_TYPE = "woman"; // 静态变量public static void main(String[] args)throws Exception {Teacher T1 = new Teacher();for (int i=0;i<15;i++){//进行15次垃圾回收System.gc();}Teacher T2 = new Teacher();Thread.sleep(Integer.MAX_VALUE);//线程休眠}}class Teacher {}
-Xms30m -Xmx30m -XX:MaxMetaspaceSize=30m
流程:

2.2JHSDB:
将jdk目录下的sawindbg.dll复制到jre对应目录下
C:\Program Files\Java\jdk1.8.0_161\lib>java -cp .\sa-jdi.jar sun.jvm.hotspot.HSDB
栈帧之间:上一个栈帧的操作数栈(interpreter expression stack)和下一个栈帧的局部变量区(interpreter locals area)会共享
2.3常量池(方法区Metaspace):
静态常量池
运行时常量池
字符串常量池
String a =new String(“king”).intern();
//去字符串常量池找到是否有等于该字符串的对象,如果有,直接返回对象的引用。不会创建String对象
2.4常见溢出(out of memory):
内存溢出
栈溢出(-Xss=1m)
堆溢出(-Xms30m -Xmx30m -XX:+PrintGCDetails)
方法区溢出(-XX:MetespaceSize=10M -XX:MaxMetaspaceSize=10M)
本机直接内存溢出(-XX:MaxDirectMemorySize=100m)
