jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。
HotSpot虚拟机GC算法采用分代收集算法:
1、一个人(对象)出来(new 出来)后会在Eden Space(伊甸园)无忧无虑的生活,直到GC到来打破了他们平静的生活。GC会逐一问清楚每个对象的情况,有没有钱(此对象的引用)啊,因为GC想赚钱呀,有钱的才可以敲诈嘛。然后富人就会进入Survivor Space(幸存者区),穷人的就直接kill掉。
2、并不是进入Survivor Space(幸存者区)后就保证人身是安全的,但至少可以活段时间。GC会定期(可以自定义)会对这些人进行敲诈,亿万富翁每次都给钱,GC很满意,就让其进入了Genured Gen(养老区)。万元户经不住几次敲诈就没钱了,GC看没有啥价值啦,就直接kill掉了。
3、进入到养老区的人基本就可以保证人身安全啦,但是亿万富豪有的也会挥霍成穷光蛋,只要钱没了,GC还是kill掉。
分区的目的:新生区由于对象产生的比较多并且大都是朝生夕灭的,所以直接采用标记-清理算法。而养老区生命力很强,则采用复制算法,针对不同情况使用不同算法。
非heap区域中Perm Gen中放着类、方法的定义,jvm Stack区域放着方法参数、局域变量等的引用,方法执行顺序按照栈的先入后出方式。
分享到:
相关推荐
Java虚拟机(JVM)的垃圾回收(GC)机制是Java程序高效运行的关键部分,它自动管理内存,释放不再使用的对象以避免内存泄漏。本文主要探讨JVM堆内存的结构和GC的工作原理,以及如何进行性能调优。 JVM堆是Java应用...
下面将详细阐述JVM、GC的基本概念,以及G1 GC的工作原理和调优策略。 首先,Java虚拟机(JVM)是Java程序运行的平台,它负责执行字节码,并提供内存管理、类加载、安全管理等服务。JVM的内存结构主要分为堆、栈、...
虚引用是最弱的一种引用关系,它不会对对象的生存时间构成影响,也无法通过虚引用来取得对象实例,仅用于在对象被回收时收到一个系统通知。 基本垃圾回收算法主要分为三种:引用计数、可达性分析清理和增量收集。...
**JVM内存模型及垃圾收集策略解析** Java虚拟机(JVM)是Java程序运行的基础,它为Java程序提供了一个跨平台的运行环境。在深入理解JVM内存模型与垃圾收集策略之前,我们首先需要知道JVM的主要组成部分:类装载器、...
在进行JVM调优时,我们需要考虑对象的分配策略、垃圾回收器的选择、内存大小设置等多个方面,以确保应用程序高效、稳定地运行。此外,了解JVM内存模型的划分,如年轻代、老年代和持久代,以及不同代之间的晋升策略,...
引用计数法是一种较为简单的对象回收策略,它的基本思想是在对象中维护一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器为0的对象就是不可能再被使用的,这些...
本文将深入探讨JVM内存结构及其与程序对象的关系,以及调优实战中的步骤和策略。 1. **多功能养鱼塘-JVM内存** JVM内存分为两个主要部分:堆内存(Heap)和非堆内存(Non-Heap)。堆内存是JVM用来存储类实例和数...
**旧生代GC**:旧生代的对象生存时间长,通常使用标记-清除或标记-压缩算法。旧生代GC包括串行GC(SerialMSC)、并行GC(parallelMSC)和并发GC(Concurrent Mark Sweep, CMS)。CMS适用于需要低停顿时间的应用,但...
通过它,开发者能够实时查看JVM的内存分配、垃圾收集和对象生存状况,这对于诊断内存泄漏、调整内存参数以及提升应用性能有着显著的帮助。 VisualGC的主要功能包括: 1. **堆内存监控**:显示堆内存的总大小、已用...
例如,它提供了各种图表,如对象生存周期图、内存池状态图和CPU热点图,帮助开发者以图形化方式理解JVM的运行状况。 总结来说,Idea插件JProfiler11是Java开发者的得力助手,它将复杂的JVM内存管理和性能优化变得...
基于对象生命周期的特性,分代收集算法将对象按照生存周期的不同划分为不同的区域,并针对不同区域采用不同的垃圾回收策略。现代的垃圾回收器(从J2SE 1.2开始)通常采用这种算法。 - **年轻代**(Young Generation...
老年代的对象生存时间长,更适合标记-整理或标记-清除。分代收集根据不同代的特点采用不同的GC策略,提高了整体效率。 5. 增量收集(Incremental Collection) 为了解决长时间暂停(Stop-the-World)问题,引入了...
5. **对象生存周期**:通过图表展现对象从新生代晋升到老年代的过程,帮助理解对象生命周期。 使用VisualGC,我们还可以进行以下操作: - **性能调优**:根据内存使用情况调整JVM的参数设置,如堆大小、新生代和老...
gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。 在充分理解了...
不同类型的GC策略适用于不同的场景,例如,新生代GC适用于短生命周期的对象,而老年代GC则处理生存时间较长的对象。 GC-powerstation 9.1.2可能提供了以下特性: 1. **性能优化**:通过改进的算法,减少了垃圾收集...
- 虚引用:仅用于跟踪对象回收,不直接影响对象生存状态。 11. **查看JVM参数默认值**: - `jps -v` 显示JVM进程及其指定参数。 - `-XX:+PrintFlagsFinal` 查看所有JVM参数的默认值。 - `jinfo` 实时查看和调整...
软件会自动解析日志,并在界面上展示各种图表,包括GC事件的时间线、堆内存的使用情况、新生代和老年代的对象生存情况等。 GCViewer的主要视图有以下几个: 1. **时间线视图**:显示了所有GC事件的发生时间,以及...
5. **对象生存周期分析**:分析对象从创建到被GC回收的整个生命周期,有助于理解对象的存活状态和内存占用。 理解并有效利用VisualGC插件,开发者可以更好地调整JVM参数,例如设置合适的堆大小、选择合适的GC算法、...
- **GC判定方法**:主要有引用计数法(JVM未采用)和可达性分析法(通过GC Roots追踪对象可达性)。 - **GC收集方法**: - **标记-清除**:标记无用对象并清除,产生内存碎片。 - **复制算法**:将存活对象复制...