Java平台的基本概念
		 
	
		• JVM,JRE,JDK
		 
	
		– JVM: Java Virtual Machine
		• 负责执行符合Java规范的Class文件
		• 不同厂家会有不同的实现,IBM J9, Sun Hotspot, JRockit, etc
		 
	
		– JRE: Java Runtime Environment
		• 包括JVM和基础类库(常见的标准API,比如java.util.*, etc)。
		一般来说基础类库是那些JCP大牛呕心沥血之作。但有些厂家
		也会针对自己的硬件修改一部分基础类库的实现。最典型的是
		IBM的JRE。
		 
	
		– JDK: Java Development Kit
		• 包括JRE和开发/编译工具(javac, javadoc, etc)。
	
		 
	
		JVM运行时数据区域
		• 程序计数器
		• 本地方法栈
		• Java虚拟机栈(JVM Stack)
		– Java虚拟机栈描述的是Java方法的执行模型:
		每个方法执行的时候都会创建一个帧(Frame)
		栈用于存放局部变量表,操作栈,动态链接,
		方法出口等信息。一个方法的执行过程,就是
		这个方法对于帧栈的入栈出栈过程。
		– 线程隔离
		 
	
		JVM运行时数据区域
		 
	
		• 堆 (Heap)
		– 堆里存放的是对象的实例
		– 是Java虚拟机管理内存中最大的一块
		– GC主要的工作区域,为了高效的GC,会把堆细分更
		多的子区域(后面有详细介绍)
		– 线程共享
		 
	
		• 方法区域
		– Hotspot JVM的永久代(Permanent Generation)
		– 存放了每个Class的结构信息,包括常量池、字段描述、
		方法描述
		– GC的非主要工作区域
		JVM运行时数据区域-例子
		– 生成了2部分的内存区域,1)obj这个引用变量,因为
		是方法内的变量,放到JVM Stack里面 2) 真正Object 
		class的实例对象,放到Heap里面
		– 上述的new语句一共消耗12个bytes,JVM规定引用占4
		个bytes(在JVM Stack),而空对象是8个bytes(在
		Heap)
		– 方法结束后,对应Stack中的变量马上回收,但是Heap
		中的对象要等到GC来回收