JVM内存分为Java堆、Java栈、方法区、本地方法栈、程序计数器
Java堆:
Java栈:
方法区:
程序计数器:
本地方法栈:
常量池:
总结:
Java堆(线程共享):运行时new出来的对象;
Java栈(线程私有):每个线程都有一个线程栈,每个方法被执行时都会创建一个栈帧,栈帧中存储方法的形参、局部变量,包括基本类型、和对象引用。方法执行完成,栈帧弹出,线程运行结束,线程栈被回收。
本地方法栈:本地方法执行时存储变量
方法区:静态变量、常量,线程共享的空间
常量池:常量池也是方法区的一部分,String常量池、整形常量池
程序计数器(线程私有):记录当前线程执行到了字节码的哪一条指令,每个线程都有一个程序计数器,线程切换时可以恢复到正确的位置。