`
lhc1986
  • 浏览: 161839 次
  • 性别: Icon_minigender_1
  • 来自: 帝都
社区版块
存档分类
最新评论

jvm内存区域划分

    博客分类:
  • Jvm
 
阅读更多

    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区域放着方法参数、局域变量等的引用,方法执行顺序按照栈的先入后出方式。

 

分享到:
评论
2 楼 hellwhj 2014-06-05  
vanezkw 写道
博主你好,对于你说的“新生区由于对象产生的比较多并且大都是朝生夕灭的,所以直接采用标记-清理算法。而养老区生命力很强,则采用复制算法,针对不同情况使用不同算法。”这和我看的其他资料不一样,有最直接的根据说明这句话是对的吗?求解。

据我所知,博主应该是说反了。sun jvm新生代默认gc算法是复制,老年代默认是标记清除。
1 楼 vanezkw 2014-04-16  
博主你好,对于你说的“新生区由于对象产生的比较多并且大都是朝生夕灭的,所以直接采用标记-清理算法。而养老区生命力很强,则采用复制算法,针对不同情况使用不同算法。”这和我看的其他资料不一样,有最直接的根据说明这句话是对的吗?求解。

相关推荐

    JVM内存区域划分.docx

    "JVM内存区域划分" JVM内存区域划分是Java虚拟机(JVM)中的一种内存管理机制,主要分为五个部分:程序计数器、Java栈、本地方法栈、堆和方法区。这些区域各自扮演着不同的角色,共同组成了JVM的内存管理系统。 ...

    JVM 性能调优_JVM 内存区域划分.pdf

    JVM性能调优_JVM内存区域划分 JVM(Java Virtual Machine)是 Java 语言的核心组件之一,其性能优化对 Java 应用程序的执行效率和稳定性具有至关重要的影响。在 JVM 中,内存区域的划分和管理是性能优化的关键所在...

    JVM内存区域划分Java系列2021.pdf

    JVM内存区域划分详细解析: JVM(Java Virtual Machine,Java虚拟机)是运行Java字节码的虚拟机进程。在JVM中,内存区域被划分为几个不同的部分,每一个部分有着不同的用途,从而实现了JVM的稳定和高效运行。根据...

    JVM内存区域划分.pdf

    在Java面试中,对于JVM内存区域的划分是一个经常会涉及到的考点,因此理解这些知识点对于准备Java相关面试的求职者来说是十分必要的。通过这个文档的学习,我们可以加深对JVM内存管理的理解,进一步掌握Java程序运行...

    JVM内存空间分配笔记

    在JDK 8之前,方法区是在堆中划分出来的一部分内存区域;而在JDK 8之后,方法区被移到了本地内存中,被称为元空间(Metaspace)。 - **变化**:JDK 8之后,方法区从堆中分离,变为元空间。 - **存储位置**:元空间...

    第25讲谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError1

    了解JVM内存区域的划分及其工作原理对于Java开发者来说至关重要,这有助于理解和解决性能问题,如内存泄漏和栈溢出。在实际开发中,合理设置JVM参数(如-Xms, -Xmx等)可以有效防止内存错误,同时,通过阅读如《深入...

    jvm 内存分析文档

    JVM内存分为几个关键区域,每个区域都有特定的功能和作用。这些区域包括: - **程序计数器(PC Register)**:每个线程都有自己独立的程序计数器,用于记录当前线程执行的字节码的行号。在方法调用、异常处理等过程...

    JVM与性能优化知识点的整理.docx

    以下是对JVM内存区域划分以及执行子系统的详细说明。 一、JVM内存区域划分 1. **程序计数器(线程私有)**:每个线程都有自己的程序计数器,用于记录当前线程正在执行的Java虚拟机指令的地址。如果线程正在执行的...

    JVM 内存结构及配置总结

    JVM内存主要分为以下几个区域: - **方法区(Method Area)**:这是所有线程共享的区域,存储类信息、常量、静态变量、即时编译后的代码等。在Java 8以前,这部分也被称为永久代(Permanent Generation),在...

    JVM内存分配与垃圾回收详解

    4. Java 堆:它是 Java 虚拟机管理的内存中最大的一块,是被所有线程共享的一块内存区域,它在虚拟机启动时创建,它的唯一目的是存储对象实例,几乎所有的对象都在这里分配内存。Java 堆也是垃圾收集器管理的主要...

    JVM-内存管理 2012-12.pdf

    Java堆是JVM内存管理中最大的一块区域,它负责存储对象实例及数组值。在虚拟机启动时创建,并且被所有线程共享。堆是垃圾收集器管理的主要区域,其大小可以通过-Xms和-Xmx参数进行控制。在JDK 1.2版本之后,Java堆被...

    JVM内存区域.docx

    ### JVM内存区域详解 #### 一、进程与线程概念 ...通过以上详细的介绍,我们可以看出JVM内存区域的划分及其各自的作用非常重要,不仅有助于理解Java程序的执行机制,也为优化程序性能提供了基础。

    一、JVM内存区域1

    JVM内存区域详解 JVM 内存区域是 Java 虚拟机在执行 Java 程序的过程中所管理的内存划分。这些区域都有自己的用途,以及创建和销毁的时间。有的区域随着虚拟机的启动而存在,有些区域则依赖用户线程的启动和结束而...

    JVM与性能优化知识点整理.pdf

    本篇文章将围绕JVM内存区域划分、执行子系统以及与性能优化相关的知识点进行详细的阐述。 一、JVM内存区域划分 1. **程序计数器**(线程私有):每个线程都有自己的程序计数器,它记录了当前线程正在执行的字节码...

    JAVA架构核心面试知识整理2(1).docx

    JVM 的内存区域划分可以分为五个部分:程序计数器、Java 栈、本地方法栈、堆、方法区和直接内存。 程序计数器 程序计数器是一块小的内存区域,用于存储当前执行的字节码指令地址。程序计数器是线程私有的,每个...

    JVM分享,包含JVM的优化目标、优化原则、JVM组成、内存区域划分、垃圾回收算法、垃圾回收器、FullGC触发时机等等.

    JVM的内容分享,包含JVM的优化目标、优化原则、JVM组成、内存区域划分、垃圾回收算法、垃圾回收器、FullGC触发时机、对象布局、元空间存储、GC调优

    jvm 调优建议文档

    - **JVM内存区域划分**:JVM内存分为新生代、老年代以及元空间(Metaspace)三大区域。其中,新生代负责存放新创建的对象,经过多次垃圾回收后存活的对象将被移动至老年代;元空间则主要用于存储类(class)、方法...

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

    ### JVM性能调优——JVM内存管理与GC回收详解 #### 概览 在现代软件开发领域,Java凭借其强大的跨平台能力和丰富的生态系统成为企业级应用的首选语言之一。然而,随着应用程序复杂度的提高以及业务需求的变化,...

Global site tag (gtag.js) - Google Analytics