JVM总结

本文详细介绍了JVM的内部组件划分及其职责,包括堆、栈和非堆内存(方法区等)。阐述了JVM内存管理模型,特别是年轻代与年老代的内存分配策略以及垃圾回收机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要: 更多内容参看gIthub:

 https://github.com/kkman2008/Notebook/blob/master/notes/JVM%E6%80%BB%E7%BB%93.md

JVM内部核心组件

几个概念

JVM内部组件、 JVM内存模型 JVM内存分配、JVM内存管理模型 Java内存模型

JVM主要分为三部分:堆、栈、非堆内存(方法区,驻留字符串)

1、堆上面存储的是应用数据类型的实例;

2、栈当中存储的是变量的引用,

3、方法区主要存储的是运行时常量池Constant pool,以及类、方法相关的数据

image

各组件内部使用见说明: https://www.quora.com/What-is-the-architecture-of-JVM-and-responsibility-of-each-component-in-JVM-Java-virtual-machine

JVM内存管理模型

image

https://baijiahao.baidu.com/s?id=1606480770208000096&wfr=spider&for=pc

Jdk1.6及之前:常量池分配在永久代 。

Jdk1.7:有,但已经逐步“去永久代” 。

Jdk1.8及之后:无(java.lang.OutOfMemoryError: PermGen space,这种错误将不会出现在JDK1.8中)。

-Xms(堆内存最小值) -Xmx (堆内存最大值)

经过多次Minor GC之后到年老代

年轻代分为3部分: Enden区和两个Survior区

年轻带空间的要点:

  •  大多数信件的对象都位于Eden区
  •  当Eden区被对象填满时,就会执行Minor GC。并把所有存活下来的对象转移到其中的一个survior区。
  •  Minor GC同样会检查活下来的对象,并把他们转移到另一个Survior区。 这样在一段时间内,总会有一个空的Suvior区。
  •  经过多次GC周期后,仍然存活下来的对象会被转移到年老代内存空间。通常这是在年轻带有资格提升到年老代前通过设定年龄阀值来完成的。

image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值