Java面试之JVM复习(二)

衔接上篇,这篇继续介绍JVM的内存分布

方式/步调

  1. 1

    虚拟机栈(线程私有)

  2. 2

    堆(Heap线程共享)运行时数据区

  3. 3

    方式区/永远代(线程共享)

  4. 4

    java堆内存从GC的角度还可以细分为:新生代和老年月。下图为堆内存的划分

  5. 5

    新生代: 用来存放新生的对象。一般占有堆的1/3的空间。因为频仍建立对象,所以新生代会频仍的触发minorGC进行垃圾收受接管。新生代又分为Eden 、Form

    survivor、To survivor三个区

    Eden 区:java新对象的出生地(若是新建立的对象占用内存很大,会直接分派到老年月)。当Eden 区内存不敷的时辰会触发Minor GC,对新生代进行一次垃圾收受接管。

    Form survivor区 :上一次GC的幸存者,作为这一次GC的被扫描者。

    To survivor区:保留了一次Minor GC过程中的幸存者。

  6. 6

    老年月:本家儿要存放应用程序中生命周期长的内存对象。

    元数据区(元空间):在JAVA8中,永远代已经被移除,被元空间所替代。元空间的素质和永远代相似,元空间和永远代之间的区别在于元空间不在虚拟机中,而是利用当地内存。是以,默认环境下,元空间的巨细仅受当地内存限制。

    类的元数据放入native memory,字符串池和类的静态变量放入java堆中,这样加载几多类的元数据就不再由MaxPermSize节制,而由系统的现实可用空间来节制。

    END
  • 发表于 2020-04-30 19:00
  • 阅读 ( 760 )
  • 分类:其他类型

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

联系我们:uytrv@hotmail.com 问答工具