`
ifxilou
  • 浏览: 14068 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JVM内存结构

 
阅读更多

JVM将内存空间划分为:方法区本地访法栈PC寄存器JVM方法栈

 

◆方法区

  • 一个JVM只存在一个方法区,所有线程共享;
  • 类的信息(类的完整有效名称、父类的完整有效名称<interface 与 Object除外>、修饰符等);
  • 类中的静态变量;
  • 类中定义为final的常量;
  • 类中的Field信息(域名、域类型和域修饰符等);
  • 类中的方法信息(方法名、方法返回类型、方法参数、方法的修饰符、方法的字节码等);
  • 方法区也可以被GC;
  • 方法区的内存大小默认最小16MB,最大64MB,可通过-XX:PermSize及-XX:MaxPermSize来指定最小最大值;

◆堆

  • 一个JVM只存在一个堆,所有线程共享;
  • 类的实例和数组;
  • 堆的内存大小默认最小值为物理内存的1/64(<1GB),最大值为物理内存的1/4(<1GB),可通过-Xms和-Xmx来指定其最大最小值;
  • 当空余堆内存小于40%时,JVM会增大Heap到-Xmx指定的大小,可通过-XX:MinHeapFreeRatio=来指定此比例;
  • 当空余堆内存大于70%时,JVM会减小Heap到-Xms指定的大小,可通过-XX:MaxHeapFreeRatio=类指定此比例;
  • 为了使内存回收更高效,从JDK1.2开始对堆采用分代管理;
    • 新生代(New Generation):一般来说,Java程序中新创建的对象都是从新生代分配内存,新生代由Eden Space和两块相同大小的Survisor Space(又称为S0和S1或From和To)构成,可通过-Xmn参数来指定新生代的内存大小,也可以通过-XX:SurvisorRatio来调整Eden Space和Survisor Space的大小;
    • 老生代(Old Generation):用于存放新生代中经过多次垃圾回收仍然存活的对象,例如缓存对象,新创建的对象也有可能在老生代上直接分配内存,主要有两种情况(由不同的GC实现来决定):一种为大对象,可通过-XX:PretenureSizeThreshold=1024(单位是字节,默认为0)来代表当对象超过多大时就不在新生代中分配内存,而是直接在老生代中分配,此参数在新生代采用Parallel Scavenge GC时无效,Parallel Scavenge GC会根据运行状况决定什么对象直接在老生代中分配内存;另一种为大的数组对象,且数组中无引用外部对象;
    • 老生代所占用的内存大小为-Xmx对应的值减去-Xmn对应的值;

◆本地方法栈

  • 用于支持native方法的执行,存储每个native方法调用的状态;
  • JDK中本地方法栈和JVM方法栈是同一个;

◆PC寄存器和JVM方法栈

  • 每个线程都会创建PC寄存器和JVM方法栈;
  • JVM方法栈只有“压栈”和“出栈”操作,操作的单位是栈帧,其中栈帧由“局部变量区”,“操作数栈“,“栈帧数据区”三部分组成;
  • JVM方法为线程私有;
  • 当JVM方法栈内存不足时,会抛出StackOverflowError错误,可通过-Xss来指定其大小

============================================

注:摘抄自《分布式JAVA应用基础与实践

分享到:
评论

相关推荐

    JVM 内存结构及配置总结

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

    JVM内存结构.pdf

    ### JVM内存结构详解 #### 一、概述 Java虚拟机(JVM)作为Java程序的运行环境,其核心组件之一便是内存管理系统。理解JVM的内存布局对于开发高性能的应用程序至关重要。本文将详细介绍JVM内存结构及其各个组成部分...

    解析JVM内存结构和6大区域

    JVM 内存结构和 6 大区域 JVM 是 Java虚拟机,它是 Java 语言的核心组件之一,为 Java 程序提供了运行环境。JVM 的内存结构是 Java 程序的基础,它的设计和实现对 Java 程序的性能和可靠性产生了深远的影响。 JVM ...

    Jvm性能优化-JVM内存结构原理分析03

    "Jvm性能优化-JVM内存结构原理分析03" Jvm性能优化是Java虚拟机(JVM)中非常重要的一部分,它对Jvm的性能产生了很大的影响。本文将从Jvm内存结构的角度来分析Jvm性能优化的原理。 Jvm内存结构主要分为五部分:堆...

    JVM内存结构.zip

    JVM内存结构的理解对于优化Java程序性能、避免内存溢出等问题至关重要。以下是对JVM内存结构的详细阐述: 1. **堆内存(Heap)** 堆内存是Java程序中最大的一块内存区域,用于存储对象实例。所有通过`new`关键字...

    JVM内存结构笔记.rar

    总之,深入理解JVM内存结构及其管理机制,有助于我们编写更高效、更稳定的Java程序,并能有效地处理内存相关问题。这份"JVM内存结构笔记"将详细阐述这些内容,是学习和研究JVM内存管理的重要参考资料。

    linux & JVM内存结构分析

    总结来说,Linux和JVM内存结构分析是提升系统效率和稳定性的重要手段。通过阅读和分析上述文件,我们可以深入了解系统资源的使用情况,进而进行针对性的调优。对于IT专业人士而言,掌握这些知识不仅能提升工作效率,...

    一文搞懂JVM内存结构

    了解JVM内存结构对于优化代码性能、防止内存泄漏以及理解程序运行时的行为至关重要。本文将深入探讨JVM内存的各个区域,帮助你全面掌握JVM的工作原理。 首先,JVM内存主要分为以下几个部分: 1. **程序计数器...

    JVM内存结构-JVM体系结构 程序计数器 虚拟机栈 本地方法栈 堆 方法区

    JVM内存结构-JVM体系结构 程序计数器 虚拟机栈 本地方法栈 堆 方法区

    深入理解JVM内存结构及运行原理全套视频加资料

    2019最新深入理解JVM内存结构及运行原理(JVM调优)高级核心课程视频教程下载。JVM是Java知识体系中的重要部分,对JVM底层的了解是每一位Java程序员深入Java技术领域的重要因素。本课程试图通过简单易懂的方式,系统...

    Java虚拟机 JVM 内存结构介绍

    Java虚拟机(JVM)内存结构是理解Java...总之,JVM内存结构是Java平台的核心特性,它为程序提供了动态的内存分配和管理,确保了程序的稳定性和效率。深入理解这一结构,有助于开发者写出更高效、更健壮的Java应用程序。

    JVM内存结构、Java内存模型、Java对象模型1

    Java内存模型(JMM)与JVM内存结构不同,它是针对多线程环境下内存访问的抽象模型。JMM确保在多线程环境下,共享变量的读写操作具有正确的顺序和可见性,通过volatile、synchronized等关键字来实现这一目标。JMM关注...

    java jvm内存结构 调优

    java jvm内存结构 调优

    jvm内存基本结构及垃圾回收

    理解JVM内存结构和垃圾回收机制对于Java开发者至关重要,它可以帮助我们更好地优化程序性能,避免内存溢出等问题。通过调整JVM参数,如堆大小、新生代与老年代的比例、垃圾收集器的选择等,我们可以根据应用的需求...

    1. JVM 内存结构的组成、各部分功能作用,学会利用内存诊断工具排查内存相关问题;2. JVM 的招牌-jvm.zip

    了解JVM内存结构及其功能对于优化Java应用程序的性能和排查内存问题至关重要。 首先,我们来详细探讨JVM的内存结构。在Java中,内存主要分为以下几个区域: 1. **程序计数器(Program Counter Register)**:每个...

    JDK8的JVM内存结构,元空间替代永久代成为方法区及常量池的变化1

    在JDK8中,JVM内存结构发生了显著变化,尤其是元空间(MetaSpace)替代了永久代(Permanent Generation)作为方法区的一部分。这种方法区的调整是由于永久代存在的一些问题,比如大小设定困难,容易引发溢出,以及给...

    深入理解JVM内存结构及运行原理全套视频加资料.txt

    2019最新深入理解JVM内存结构及运行原理(JVM调优)高级核心课程视频教程下载。JVM是Java知识体系中的重要部分,对JVM底层的了解是每一位Java程序员深入Java技术领域的重要因素。本课程试图通过简单易懂的方式,系统...

    jvm内存结构-机器指令的执行模式演示demo代码

    jvm内存结构-栈的变化,机器指令的格式/执行模式文章中的demo代码。

Global site tag (gtag.js) - Google Analytics