`

JVM内存管理机制

    博客分类:
  • JVM
阅读更多

JVM引进了分区管理的机制。
采用分区管理机制的JVMJVM所管理的所有内存资源分为2个大的部分。永久存储区(Permanent Space)和堆空间(The Heap Space)。其中堆空间又分为新生区(Young (New) generation space)和养老区(Tenure (Old) generation space),新生区又分为伊甸园(Eden space),幸存者0区(Survivor 0 space)和幸存者1区(Survivor 1 space)。

永久存储区(Permanent Space):永久存储区是JVM的驻留内存,用于存放JDK自身所携带的Class,Interface的元数据,应用服务器允许必须的Class,Interface的元数据和Java程序运行时需要的Class和Interface的元数据。被装载进此区域的数据是不会被垃圾回收器回收掉的,关闭JVM时,释放此区域所控制的内存。

堆空间(The Heap Space):是JAVA对象生死存亡的地区,JAVA对象的出生,成长,死亡都在这个区域完成。堆空间又分别按JAVA对象的创建和年龄特征分为养老区和新生区。
新生区(Young (New) generation space):新生区的作用包括JAVA对象的创建和从JAVA对象中筛选出能进入养老区的JAVA对象。

伊甸园(Eden space):JAVA对空间中的所有对象在此出生,该区的名字因此而得名。
也即是说当你的JAVA程序运行时,需要创建新的对象,JVM将在该区为你创建一个指定的对象供程序使用。创建对象的依据即是永久存储区中的元数据。

幸存者0区(Survivor 0 space)和幸存者1区(Survivor1 space):当伊甸园的控件用完时,程序又需要创建对象;此时JVM的垃圾回收器将对伊甸园区进行垃圾回收,将伊甸园区中的不再被其他对象所引用的对象进行销毁工作。同时将伊甸园中的还有其他对象引用的对象移动到幸存者0区。幸存者0区就是用于存放伊甸园垃圾回收时所幸存下来的JAVA对象。当将伊甸园中的还有其他对象引用的对象移动到幸存者0区时,如果幸存者0区也没有空间来存放这些对象时,JVM的垃圾回收器将对幸存者0区进行垃圾回收处理,将幸存者0区中不在有其他对象引用的JAVA对象进行销毁,将幸存者0区中还有其他对象引用的对象移动到幸存者1区。幸存者1区的作用就是用于存放幸存者0区垃圾回收处理所幸存下来的JAVA对象。

养老区(Tenure (Old) generation space):用于保存从新生区筛选出来的JAVA对象。

JVM的垃圾回收工作是怎样运作的。首先当启动J2EE应用服务器时,JVM随之启动,并将JDK的类和接口,应用服务器运行时需要的类和接口以及J2EE应用的类和接口定义文件也及编译后的Class文件或JAR包中的Class文件装载到JVM的永久存储区。在伊甸园中创建JVM,应用服务器运行时必须的JAVA对象,创建J2EE应用启动时必须创建的JAVA对象;J2EE应用启动完毕,可对外提供服务。

JAVA对象。如果到最后养老区,幸存者1区,幸存者0区和伊甸园区都没有空间的话,则JVM会报告“JVM堆空间溢出(java.lang.OutOfMemoryError: Java heap space,也即是在堆空间没有空间来创建对象。



分享到:
评论

相关推荐

    JVM工作原理及内存管理机制

    在执行方法时JVM提供了invokestatic、invokevirtual、invokeinterface和invokespecial四种指令来执行 (1)invokestatic:调用类的static方法 (2)invokevirtual:调用对象实例的方法 (3)invokeinterface:将属性...

    JVM内存管理白皮书

    JVM提供的内存管理机制是自动的,这与其他一些编程语言需要开发者显式地进行内存管理形成鲜明对比。自动内存管理的优势在于它减轻了开发者的负担,避免了因内存管理不当而产生的诸如内存泄漏等问题。 2. 垃圾收集的...

    JVM 内存管理之道

    JVM 内存管理之道 JVM垃圾回收机制 JVM GC组合 JVM 内存监控工具

    JVM性能调优-JVM内存整理及GC回收.pdf

    本文将围绕JVM性能调优这一主题展开,重点探讨JVM内存管理机制、垃圾回收(GC)算法及其优化策略。 #### Java参数传递机制解析 首先,澄清Java中的参数传递机制是非常重要的,这有助于我们更好地理解对象在方法调用...

    java虚拟机jvm及Tomcat中的jvm有关内存的设置与调优

    ### Java虚拟机(JVM)内存设置与调优详解 ...通过对JVM内存管理机制的理解,结合具体的应用场景,开发者可以有效地避免内存溢出错误,确保应用稳定高效地运行。希望本文能为您的Java项目提供有力的技术支持。

    JVM自动内存管理机制

    Java自动内存管理机制包含两部分:内存分配和内存回收,要想理解内存分配和回收的机制,则需要了解下Java内存区域(Java运行时数据区),这篇随笔将按照下面的线索进行逐步解析:1.Java运行时数据区2.对象“已死”的...

    JVM-内存管理 2012-12.pdf

    对Java开发人员而言,理解这些内存管理机制不仅能够帮助其编写出更加稳定和高效的代码,还能在发生内存问题时迅速定位和解决问题。随着JDK版本的更新,内存管理的机制和参数也在不断地优化和演进,开发者需要不断...

    MyEclipse内存不足谈谈JVM内存

    ### MyEclipse内存不足与JVM内存管理 #### 1. 各个参数的含义 在探讨具体的参数之前,我们先来了解下JVM内存管理的基本...通过上述分析,我们可以更好地理解JVM内存管理机制以及如何解决MyEclipse内存不足的问题。

    vmmap 观察jvm内存 监控jvm jvm线程

    在Java开发过程中,对JVM(Java虚拟机)的监控是至关重要的,它能帮助我们了解应用程序的运行状态,优化性能,以及及时发现并解决内存泄漏等问题。...记住,理解JVM内存管理机制是提升Java应用性能的关键步骤。

    jvm内存的运作

    尽管如此,这种自动化管理也可能导致一些问题,如内存泄漏和内存溢出,尤其是在不了解JVM内存管理机制的情况下,这些问题往往难以定位和解决。 #### 二、JVM运行时数据区域详解 JVM在执行Java程序的过程中,会使用...

    jvm内存管理,pdf

    通过以上内容可以看出,深入理解JVM内存管理和垃圾收集机制对于提高应用程序的性能至关重要。尽管现代JVM已经非常智能,能够自动管理大部分内存相关的工作,但在面对复杂的应用场景时,仍然需要开发人员具备一定的...

    打造极速MyEclipse+由MyEclipse内存不足谈谈JVM内存

    【打造极速MyEclipse:...总之,理解JVM内存管理机制并合理配置MyEclipse的JVM参数,能有效避免内存不足问题,提高开发效率。同时,定期检查和优化内存配置,保持MyEclipse的稳定运行,是每个Java开发者必备的技能。

    JVM内存空间分配笔记

    ### JVM内存空间分配详解 #### 一、JVM内存模型概览 ...综上所述,理解JVM内存分配机制对于Java开发者来说至关重要,这不仅有助于编写高效、稳定的代码,还能在遇到性能瓶颈时快速定位问题并进行优化。

    jvm 内存分析文档

    JVM内存管理主要包括内存结构、内存分配以及垃圾回收(GC)等方面。了解这些知识对于优化Java应用程序的性能至关重要。 ### 1. JVM内存结构 #### 1.1.1 JVM内存概述 JVM内存分为几个关键区域,每个区域都有特定的...

    03-VIP-JVM内存分配机制与垃圾回收算法1

    Java虚拟机(JVM)内存分配机制和垃圾回收(Garbage Collection, GC)是Java编程中的核心概念,它们直接影响到程序的...同时,调整JVM的垃圾回收参数(如XX:NewRatio, XX:SurvivorRatio等)也可以帮助优化内存管理。

    JVM内存模型

    JVM内存模型是Java虚拟机(JVM)中的一种内存管理机制,它将内存区分为永久区内存(Permanent space)和堆内存(heap space)两大块。永久区内存用于存放加载的Class类级对象,如class本身、method、field等等,而堆...

    (二)MATJVM 内存分析工具.MAT JVM 内存分析工具.MAT JVM 内存分析工具.

    MAT JVM内存分析工具可以帮助开发者深入理解Java虚拟机(JVM)的内存管理机制,通过分析堆内存快照来识别内存消耗异常的情况。 首先,MAT提供了丰富的视图来帮助用户查看内存状态,例如“概述”视图可以快速了解堆...

    Sun JVM原理与内存管理

    本文将详细介绍Sun JDK 1.6 GC的工作原理、内存管理机制以及调优技巧。 #### 二、为什么学习GC? - **性能瓶颈**:随着应用规模的增长,GC可能成为限制应用性能和并发能力的主要因素之一。 - **避免OOM**:合理...

    SPARK内存管理机制最全!

    在Spark中,内存管理机制与JVM(Java虚拟机)有着紧密的联系。Java堆内存是JVM管理的内存区域,用于存放对象实例,而堆外内存则是不经过JVM堆直接通过Java本地接口分配的内存。堆外内存的管理赋予了Spark更高效的...

Global site tag (gtag.js) - Google Analytics