java程序在运行时,在内存中分配了五个区域:
栈内存:用于存储局部变量,当数据使用其所占空间会自动释放。
堆内存:用于存储数组和对象,通过new我建立的实体都存放在堆内存中。其中实体包括数组和对象。而数组和实体的引用数据类型变量却存在与栈内存中,它里面存放的是数组和对象的内存地址值。
方法区:用于存放类中的方法,类中的共享数据也就是被static修饰的成员。
本地方法区:
寄存器:
举个例子综合说明一下吧:
class Demo
{
static int number=10;
int sum=0;
public static void main(String[] args)
{
for(int i=0;i<number;i++)
{
sum+=i;
}
}
}
其中i 就是局部变量 number是类变量也称静态变量,sum是成员变量也称实例变量,局部变量一般定义在函数或者语句中存放于栈内存中,数组和实体的引用数据类型变量也存在与栈内存中,它里面存放的是数组和对象的内存地址值。成员变量定义在类中;没有被static修饰符修饰的成员变量存放于堆内存中,被static修饰的成员变量也就是类变量存放于方法区中。
|