java 虚拟机提供了程序运行时环境,其中,运行时环境中最重要的一个资源是运行时数据区。运行时数据区是操作系统为java虚拟进程分配的内存区域,java虚拟机操作着这块区域。
运行时数据区又划分为几个子区:
1.堆区:存放对象。
2.方法区:存放类的类型信息(静态变量和方法信息)
3.java栈区。
以一个小程序为例:
public class Amain
{
public static void main(String[] arr)
{
Sa s = new Sa("ren");
s.printName();
}
}
class Sa
{
String name;
Sa(String name)
{
this.name = name;
}
void printName()
{
System.out.println(name);
}
}
Sal类的类信息包括Sa类中的printName()还有Amain类的信息(包括main方法)方法在方法区内。
栈内存中存放着执行main()方法的主线程的方法掉用栈。
此程java虚拟机的运行过程为:首先在程序加载的时候找classpath文件中找到Amain.class类把它中的信息加载到方法区内,然后java虚拟机定位Amain中的main方法的字节码开始执行它的命令,加载Sa类信息到方法区,创建对象,并定位printName的字节码,执行printName()命令。
|