java内存模型

对于大多数的程序员来说,Java内存比较流行的说法便是堆和栈,这其实是非常粗略的一种划分,这种划分的”堆”对应内存模型的Java堆,”栈”是指虚拟机栈

运行时内存模型,分为线程私有和共享数据区两大类,其中线程私有的数据区包含程序计数器、虚拟机栈、本地方法区,所有线程共享的数据区包含Java堆、方法区,在方法区内有一个常量池。

程序计数器:每个线程都有自己计数器,是私有内存空间

虚拟机栈:Java方法执行的内存模型

本地方法栈:native 方法执行的内存。

堆: Java虚拟机管理的最大的一块内存,也是GC的主战场,里面存放的是几乎所有的对象实例和数组数据, Java堆被分为新生代和老年代;

方法区:方法区主要存放的是已被虚拟机加载的类信息、常量、静态变量,

运行时常量池:运行时常量池也是方法区的一部分,用于存放编译器生成的各种字面量和符号引用

 

内存分配:

new 类 分配在堆上, 引用在虚拟机栈,变量分配在虚拟机栈上。

 

这篇文章说的更清楚:

http://www.jianshu.com/p/24c074138efa

posted on 2017-03-17 21:28  gone_1  阅读(107)  评论(0)    收藏  举报