java虚拟机内存分布

来源:互联网 发布:糊是什么意思网络语言 编辑:程序博客网 时间:2024/05/19 20:39

《深入理解java虚拟机》,很好的解释了JVM的工作原理,下面是我自己在学习这本时,总结的一些笔记,摘自周志明的《深入理解java虚拟机》第二版

理解jvm的工作原理,对java员来说是非常必要的。

java虚拟机运行时数据区分为:方法区,堆区,栈区,程序计数器。


1、程序计数器

程序计数器是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。

多线程时,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储。

我们称这类内存区域为“线程私有”的内存。

2、栈stack

线程私有,生命周期和线程相同。

存放基本数据类型和对象的引用。

基本数据类型有8种,Boolean,byte,int,double,float,short,long,char。

3、堆Heap

java堆是java虚拟机内存中最大的一块。

java堆是被所有线程所共享的一块区域,在虚拟机创建时启动,存放对象实例。

java堆是垃圾回收器管理的主要区域,因此又被称为“GC堆”(Garbage Collection Heap)。

java堆还可以细分为新生代和老年代。

4、方法区

方法区,和java堆一样,是线程共享的一块区域,用于存储已经被虚拟机加载的类信息,常量,静态变量、即时编译器编译的代码。

运行时常量池是方法区的一部分。

原创粉丝点击