美文网首页
JVM的初识

JVM的初识

作者: chenjiehao | 来源:发表于2018-06-25 11:43 被阅读0次

    最近感觉自己的脚步跟不上自己的思想,可能自己有些浮了。所以想静下来巩固自己学习的一些基础知识。


    JVM的基础架构图(初次画图):

    我们今天主要就是说明内存区域区域是如何对应我们代码。简单的一个例子,

    public static void main(String[] args) {

    Student stu=new Student();

    }

    首先代码会被加载到方法区(main方法),然后new Student()则会被分配到堆内存中,再然后stu引用Student这个对象则会分配到栈中。计算器的功能则是负责代码是如何一步步运行的(个人理解)。


    重点来了解一下JVM中的堆内存的结构。拷贝二张图

    jdk1.7 jdk1.8

    从上面的图中我们可以很清晰的看出堆内存划分的规则,Young Gen我们称之的年轻代,被划分三块,Eden、S0、S1。Old Memory我们称之老年代,加上我们称之永久代的区域Perm(jdk1.8之后就不存在,只有元空间,使用堆外内存)。

    我们new的对象是如何在这个区域执行流转?我们大概的流程说明一下,Object--->Eden随着Eden的对象越来越多,就会将Eden的一直常驻对象转移到S0区域(minor GC),随之S0区域中也慢慢装下的时候,也会将一些不用的对象清除并转移剩下的对象到S1区域。在这个过程中,有些对象可能就一直在Young区域中我们就会将其转移到Old区域中。随着old区域也慢慢的装不下的时候,就会发生major GC。

    (仅作为自己的学习总结,如果有不对的地方也欢迎大家的指正。)

    相关文章

      网友评论

          本文标题:JVM的初识

          本文链接:https://www.haomeiwen.com/subject/funeyftx.html