码迷,mamicode.com
首页 > 编程语言 > 详细

java虚拟机 jvm java堆 方法区 java栈

时间:2017-08-19 17:11:41      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:csdn   技术   新生代   ==   情况   简单   rom   依据   方法区   

java堆是java应用程序最密切的内存空间。

差点儿全部的对象都存在堆中。java堆全然自己主动化管理,通过垃圾回收机制,垃圾对象会自己主动清理。不须要显式释放。

依据java垃圾回收机制的不同。java堆可能有不同的结构。

最常见的是将整个java堆分为新生代和老年代。跟人类几乎相同了。老龄化就有可能找上帝去了,新生代存放新对象或者年龄不大的对象,老年代存放老年对象。新生代有可能分为eden区、s0区和s1区,s0区和s1区也被称之为 from to区域。他们是两块大小相等能够互换的内存空间例如以下图所看到的:

 技术分享

在大多数情况下。对象首先被分配在eden区,再一次新生代回收后,假设对象还存在,则会进入s0或者s1,之后没经过一个新生代回收,年龄+1.当对象年龄达到一定条件后,就会老龄化进入老年代。

以下一个简单的实例展示java堆、java方法区、java栈之间的关系。代码例如以下:

package cn.xhgg.test;
public class HeapTest {
private int id;
public HeapTest(int id) {
this.id = id;
}
public void show() {
System.out.println("id:  "+id);
}
public static void main(String[] args) {
HeapTest h1 = new HeapTest(1);
HeapTest h2 = new HeapTest(3);
h1.show();
h2.show();
}
}


HeapTest 实例引用类型肯定分配在堆中、h1h2局部变量存放在java栈中、并指向堆中的两个实例。

例如以下图所看到的:

技术分享


 

 

java虚拟机 jvm java堆 方法区 java栈

标签:csdn   技术   新生代   ==   情况   简单   rom   依据   方法区   

原文地址:http://www.cnblogs.com/tlnshuju/p/7396780.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!