`
androider
  • 浏览: 744275 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JVM 堆管理

阅读更多

JVM管理的内存,通常叫做堆(heap),可以用下面的图来描述。 


JVM启动后,保留一段地址空间,这个空间的大小由-Xmx指定。这块空间的大小就是heap可能的最大值,但一开始不一定全都分配了物理内存,初始分配的heap大小由-Xms指定,如果-Xms小于-Xmx,剩余部分是virtual的,当需要的时候,再向OS申请。 

绿色部分是young generation的内存,由一块Eden(伊甸园,有意思)和两块Survivor Space(1.4文档中称为semi-space)构成。新创建的对象的内存都分配自eden。两块Survivor Space总有会一块是空闲的,用作copying collection的目标空间。Minor collection的过程就是将eden和在用survivorspace中的活对象copy到空闲survivor space中。所谓survivor,也就是大部分对象在伊甸园出生后,根本活不过一次GC。对象在young generation里经历了一定次数的minor collection后,年纪大了,就会被移到old generation中,称为tenuring。(是否仅当survivor space不足的时候才会将老对象tenuring? 目前资料中没有找到描述) 

浅蓝色部分是old generation的内存。 

深蓝色部分称为permanent generation,是JVM用来保存class object和meta data,大小由-XX:PermSize和-XX:MaxPermSize指定。大量动态生成(编译)和加载class会增加这部分内存的耗用。 

剩余内存空间不足会触发GC,如eden空间不够了就要进行minor collection,old generation空间不够要进行major collection,permanent generation空间不足会引发full GC。 

分享到:
评论

相关推荐

    JVM基础知识及性能调优

    - **直接内存**:不受JVM堆管理,适用于频繁访问且申请次数较少的场合,如NIO框架中的使用。 #### 三、垃圾回收机制 - **年轻代**:由于对象存活周期短,主要采用复制算法进行回收。 - **Eden区**与**Survivor区*...

    JVM内存管理白皮书

    在这份由Sun Microsystems公司出版的《JVM内存管理白皮书》中,我们可以找到关于Java虚拟机(JVM)内存管理的详细介绍和深入分析。这份文档对于想要深入了解JVM工作原理的读者来说是一份宝贵的学习资料。在这份...

    JVM-内存管理 2012-12.pdf

    在JDK 8及之后的版本中,方法区的实现被移除了,取而代之的是元空间(Metaspace),它使用本地内存而不是JVM堆内存。 Java堆是JVM内存管理中最大的一块区域,它负责存储对象实例及数组值。在虚拟机启动时创建,并且...

    Sun JVM原理与内存管理

    - **Sun Hotspot 对 JVM 堆采用分代管理**: - **新生代** (Young Generation):包含 Eden 和 Survivor 区域 (S0/S1)。 - **老年代** (Old Generation):长期存活的对象将被转移到这里。 - **分代策略**:利用...

    JVM中[堆]的所有内容-pdf

    总而言之,JVM中的堆内存管理是Java性能优化的关键部分,理解其工作原理和调优策略对于开发高性能的应用至关重要。通过对各种GC行为、内存区域分配策略以及可用工具的深入了解,开发者可以更有效地管理和优化堆内存...

    JVM堆模型

    《JVM堆模型详解》 Java虚拟机(JVM)是Java程序运行的核心,而堆内存作为JVM中最大的一块内存区域,对于程序的运行效率和稳定性起着至关重要的作用。本文将深入探讨JVM堆模型,理解其工作原理,以及如何通过优化...

    jvm内存管理,pdf

    ### JVM内存管理详解 #### 一、引言 在探讨JVM内存管理之前,我们先来看一下为何要深入了解这一主题。对于深入掌握Java的人来说,内存管理是不可或缺的一部分。随着技术的发展,内存管理变得越来越自动化,但这也...

    JVM垃圾回收机制与GC性能调优

    本文主要探讨JVM堆内存的结构和GC的工作原理,以及如何进行性能调优。 JVM堆是Java应用程序的主要内存区域,用于存储所有类实例和数组。它分为三个主要区域:新域(Young Generation)、旧域(Old Generation)和...

    深入理解JVM

    《深入理解JVM》是一本专注于Java虚拟机(Java Virtual Machine)技术的深度解析书籍,其主要内容涵盖了JVM的工作原理、内存管理、性能优化、类加载机制、垃圾收集以及异常处理等多个关键领域。通过深入学习这本书,...

    JVM堆内存分析工具,OOM排查工具。包括ha和mat两种

    "JVM堆内存分析工具"如HA(HeapAnalyzer)和MAT(Memory Analyzer Tool)就是专门为此设计的,它们能够帮助开发者深入洞察内存的分配、使用以及可能存在的内存泄漏问题。 首先,HA(HeapAnalyzer)通常是一个简单的...

    MemoryAnalyzer JVM堆内存分析工具

    《深入解析MemoryAnalyzer:JVM堆内存分析利器》 在Java开发中,内存管理是至关重要的环节,良好的内存管理能够优化应用性能,防止内存泄漏,提升系统稳定性。MemoryAnalyzer(MAT)是一款强大的JVM堆内存分析工具...

    mat(mac)---jvm内存分析工具

    MAT通过深入分析堆转储(heap dump)文件,提供了丰富的视图和功能,使内存管理变得更加直观和高效。 1. **内存泄漏检测**: 内存泄漏是导致Java应用性能下降和系统资源耗尽的主要原因之一。MAT通过分析堆转储文件...

    推荐一些JVM原理,JVM调优,JVM内存模型,JAVA并发 电子书1

    内存管理涉及JVM内存区域,包括堆、栈、方法区、程序计数器和本地方法栈,每部分都有其特定的用途和管理方式。 2. JVM内存模型:JVM内存模型定义了内存中各个部分的关系,以及在多线程环境下如何共享和分配内存。...

    jdk,jvm源码

    5. 内存管理:JVM的垃圾回收机制自动管理内存,包括对象的分配和回收。常见的垃圾收集算法有标记-清除、复制、标记-整理和分代收集等。 6. 多线程:JVM支持多线程并发执行,每个线程都有自己的程序计数器和虚拟机栈...

    JVM内存管理学习笔记

    《JVM内存管理学习笔记》 在Java世界中,JVM(Java Virtual Machine)是运行所有Java应用程序的核心。深入理解JVM内存管理对于优化程序性能、预防和解决内存泄漏问题至关重要。本文将从JVM内存模型、内存区域划分、...

    解决J2EE系统应用性能问题常用优化项目

    综上,优化J2EE应用性能涉及多个层面,包括JVM堆管理、垃圾回收策略、线程池配置、EJB资源池和数据库连接池等。每个环节的优化都需要根据具体应用的需求和工作负载进行细致调整,以实现最佳的系统性能。

    JVM内存管理和JVM垃圾回收

    Java虚拟机(JVM)内存管理和垃圾回收是Java编程中至关重要的概念,它们直接影响着程序的性能和稳定性。本文将详细解析JVM内存结构以及垃圾回收机制。 首先,JVM内存主要分为四个区域: 1. **堆(Heap)**:这是...

    JVM内存管理及调优

    **JVM内存管理及调优** Java虚拟机(JVM)是Java程序运行的基础,它为Java应用程序提供了运行环境。JVM内存管理是优化Java应用性能的关键环节,涉及到内存分配、垃圾回收以及内存溢出等问题。毕玄,一位在淘宝有着...

    从JVM内存管理的角度谈谈静态方法和静态属性

    JVM(Java虚拟机)内存管理是Java程序性能的关键因素,它主要分为栈(Stack)和堆(Heap)两个主要区域。栈主要用于存储基本类型、局部变量和方法调用的指令,而堆则用于存储对象实例及其属性。在JVM中,内存管理还...

Global site tag (gtag.js) - Google Analytics