JVM之---Java内存结构(第三篇)

        通过前两节,我们了解到了java的大概内存结构,其实JVM的内存分布还是比较复杂的,并且各个java虚拟机不相同,内部结构会有相应的变化,有些时候我们将其理解为概念模型才不会有太多的烦恼,虽然前面的文字描述了那么多关于内存模型的东西,但是可能在你现在安装的JVM中未必就完全按照如此进行分布,需要视具体的版本而定。

为什么还要有这一小节的存在呢?本来想要开始java垃圾回收的文章,但是在整理垃圾回收相关资料的时候,我又决定,需要对堆内存做进一步的划分说明(其实这本身是JVM对垃圾回收的一个规范模型),这样,在理解起来以后的垃圾回收机制就不会显得有那么多的陌生感。

本节中将有如下的一些内容进行说明:

1、堆内存的分布

2、通过jps和jstat命令查看堆内存的情况

3、通过一个dump信息查看堆内存的情况

第一:java堆内存的分布

java的堆内存还可以进一步的细分,现在比较主流的划分为Eden,两个Survivor from,Survivor to ,permanent,tenured,如下图所示,其中Eden,两个Survivor是在新生代中,permanent和tenured在老年代中,什么是新生代和老年代,说的通俗一点就是一个是存放刚创建对象的内存空间,一个是存放早期创建对象的内存空间,如下图所示:

你可能感兴趣的:(java虚拟机,JVM,堆内存,Eden,Survivor,虚拟机)