Java的内存、堆和栈


看了看上面的帖子,有很多讨论,但是缺乏结论,所以又仔细看了《深入理解Java虚拟机》,搞明白了这几个概念。
内存数据区分为:


1.程序计数器(PC)用来记录当前运行的指令,linux中也有这个PC的概念,每个线程不一样。
2.Java虚拟机栈,线程私有,存储局部变量、操作数栈、动态链接、方法出口。
3.本地方法栈,用来执行Native方法,就是不是Java的方法,是Java外的,系统自身的方法。
很多虚拟机不区分这两个栈。
4.堆,线程共享区域,存放对象实例,"随着JIT编译器分发展与逃逸分析技术的逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化发生,所有的对象都分配在堆上也渐渐变得不是那么‘绝对’了"。
5.方法区,线程共享区域,存储类信息、常量、静态变量、即时编译器编译后的代码等数据。

http://www.cnblogs.com/dingyingsi/p/3760447.html,这个帖子讲的很清楚。

posted on 2015-07-24 11:51  chaiyu2002  阅读(110)  评论(0编辑  收藏  举报

导航