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

java内存区域

时间:2018-10-16 01:38:00      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:java虚拟机   代码   数组   时间   动态链接   full gc   nat   stack   内存   

运行时数据区域:

1、程序计数器:线程执行时的字节码行号指示器。

2、java虚拟机栈(Stack):java方法执行的内存模型。调用方法的时候,就会创建一个虚拟机栈,用于存储局部变量表,操作数栈,动态链接,方法出口等信息。

3、本地方法栈:存放需要调用到的Native方法的相应数据。

以上三者是线程私有的。

下面的两个是线程共享的。

4、java堆(Heap):用于存放实例对象,数组。

5、方法区:用于存放被虚拟机加载的类信息,常量,静态变量,即时编译后的代码数据。

 

基于分代的思想进行划分:

堆(Heap)的细分:新生代,老年代。

  其中,新生代又分为:Eden,From Servivor,To Servivor。

方法区:永久代

  

分代思想的具体应用:

  1、所有的对象,出生在Eden区。

  2、eden:from servivor:to servivor = 8 : 1 : 1

  3、堆内存不够,发生GC。将存活的对象拷贝到from servivor区域,对象在servivor中每熬过一次GC(from , to 这两个轮流用),就增加一岁。当增加到一定的岁数后,就将对象移到老年代。

  4、新生代发生的GC为Minor GC。发生在老年代GC为Full GC。做一次 Full GC 要比进行一次 Minor GC 的时间更长。

 

java内存区域

标签:java虚拟机   代码   数组   时间   动态链接   full gc   nat   stack   内存   

原文地址:https://www.cnblogs.com/chen--biao/p/9795389.html

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