01__JVM(3)线程共享区

JVM(3)线程共享区

image

方法区

类信息

常量

静态变量

及时编译期编译后的代码(运行时编译的 如:动态代理添加的)

Java堆

对象实例

数组

Java堆的大小参数设置

-Xmx 堆区内存可被分配的最大上限
-Xms 堆区内存初始内存分配的大小

JMM? 叫JVM的内存模型

基于分代的思想

新生代(堆空间的1/3)

  • Eden 空间(8/10)
  • From Survivor空间(1/10)
  • To Survivor空间(1/10)

老年带(堆空间的2/3)

方法区

永久代(JDK1.8版本以前叫法) == 元空间(JDK1.8版本和以上版本的叫法)

JMM--对象内存分配

对象 优先在Eden分配

长期存活的对象将进入老年代

大对象直接进入老年代

动态对象年龄的判定

JMM--对象的回收----判断对象的存活

引用计数算法

可达性分析法(有引用与没有引用判断是否可达:基于GC Roots)

在Java,可作为GC Roots的对象包括:

1.方法区: 类静态属性引用的对象;

2.方法区: 常量引用的对象;

3.虚拟机(本地变量表)中对象;

4.本地方法栈JNI(Native方法)中引用的对象

image

JVM中的垃圾回收(GC)

新生代

Minor GC(除了定时回收以外--->触发条件:当新生代Eden空间不足时)

对应 ---> 复制回收算法(使用率只有50%)(特点:速度快;缺点:浪费空间50%)

适合大部分对象都不需要回收

(90%的对象不用区垃圾回收的,只有10%对象需要去垃圾回收)

所以 JVM新生代里做了10%空间的预留区 所以最后空间被分成了 8:1:1 的大小

image
image

image

老年代

Full GC(全盘清扫)(优先使用标记清除,如果清除以后碎片过多就会使用标记整理)

标记清除算法(会带来内存碎片)

标记整理算法

image
image

永久代

会不会进行垃圾回收? 会 (发生条件比较严格)

垃圾回收的算法

  • 1.复制回收算法
  • 2.标记清除算法
  • 3.标记整理算法

元空间

元空间过大会挤占堆的空间

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java 虚拟机有自己完善的硬件架构, 如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 屏蔽了与具体操作系...
    尹小凯阅读 1,707评论 0 10
  • JVM架构 当一个程序启动之前,它的class会被类装载器装入方法区(Permanent区),执行引擎读取方法区的...
    cocohaifang阅读 1,701评论 0 7
  • 转载blog.csdn.net/ning109314/article/details/10411495/ JVM工...
    forever_smile阅读 5,403评论 1 56
  • 原文阅读 前言 这段时间懈怠了,罪过! 最近看到有同事也开始用上了微信公众号写博客了,挺好的~给他们点赞,这博客我...
    码农戏码阅读 6,027评论 2 31
  • 0. 前言 JVM笔记系列,以JDK1.7为基准,主要以《深入理解Java虚拟机》(第二版)和《Java虚拟机规范...
    郭寻抚阅读 947评论 0 3