1.Java内存知识整理
Java内存模型:堆、栈、方法区、PC计数器、寄存器
2.程序运行时,JVM将“运行时逻辑(即线程)”存储在栈,将运行时数据存储在堆空间。
程序运行时,每个程序都有自己的逻辑,但可能多个程序对同一个数据进行操作。就是说“运行时逻辑”应该是java线程私有的;“运行时数据”应该是所有java线程共享的。
3.JVM栈主要存储3类数据:本地变量表(基本类型,对象引用)、操作栈、方法出入口。
堆:堆空间和方法区。
堆空间:保存各种JAVA对象,比如数组,new出的对象。堆空间的分代管理:新生代(Eden+Survivor)和老生代。
方法区(又叫permanent space/永久存储区/非堆内存/静态区):跟堆空间一样,被所用的线程共享,方法区包含所有的class和static变量。