JVM在内存中分配这些区域:类(方法)区域,堆,堆栈,程序计数器寄存器,本机方法堆栈.
我知道堆用于存储对象,堆栈用于存储局部变量和部分结果.根据定义,Class(Method)Area存储每类结构,例如运行时常量池,字段和方法数据,方法的代码.但我真的不明白其中的区别.
谁能解释一下Class area和Heap之间的区别?
Pet*_*rey 14
Java 6将所有常量池和类信息存储在Perm Gen中
Java 7仅将类信息存储在Perm Gen中.字符串文字池位于堆上.
Java 8没有Perm Gen.文字池和类信息在堆上.
你已经解释了差异.类似方法的类结构存储在perm gen中.每个实例中的数据都存储在堆中.
它们是分开的,因为这些类型的数据具有非常不同的生命周期,例如,对象通常是短暂的,并且类通常是非常长寿的.
AFAIK他们正在删除它,因为太多开发人员发现它令人困惑.
类(方法)区域存储代码 - 这是程序的代码.堆存储对象实例.例如:
public void MakeSomeFruit(){
Fruit myFruit=new Fruit();
}
Run Code Online (Sandbox Code Playgroud)