background image

  当 JAVA 虚拟机运行一个程序时,它需要内存来存储许多东西,例如:字节码、从已

装载的 class 文件中得到的其他信息、程序创建的对象、传递给方法的参数,返回值、

局部变量等等。Java

虚拟机把这些东西都组织到几个 运行时数据区 中,以便于管理。

  某些运行时数据区是由程序中所有线程共享的,还有一些则只能由一个线程拥有。

每个 Java 虚拟机实例都有一个方法区以及一个堆,它们是由该虚拟机实例中所有的线程

共享的。当虚拟机装载一个 class 文件时,它会从这个 class 文件包含的二进制数据中

解析类型信息。然后把这些类型信息放到方法区中。当程序运行时,虚拟机会把所有该

程序在运行时创建的对象都放到堆中。