`

Java虚拟机运行时所管理的内存

    博客分类:
  • java
 
阅读更多
  根据《java虚拟机规范》的规定,Java虚拟机运行时所管理的内存将会包括以下几个运行时数据区域:

1、程序计数器:顾名思义,其作用是作为当前线程所执行的字节码的行号指示器,它是线程私有的。

2、java虚拟机栈:它描述的是Java方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口等信息,每个方法的执行过程就对应着一个栈帧在虚拟机栈中从出栈到入栈的过程,它也是线程私有的。

3、本地方法栈:其与虚拟机栈类似,其区别在于虚拟机栈为执行JAVA方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的Native方法服务;需要注意的是,虚拟机规范中并没有对如何实现本地方法栈作具体规定,具体的虚拟机可以自由实现它;有的虚拟机直接把虚拟机栈跟本地方法栈合二为一,如Sun HotSpot虚拟机。

4、Java堆:这是大多数比较熟悉的内存区域,对于大多数应用程序来说,java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块,它是被JVM中的所有线程共享的一块内存区域,在JVM启动时就创建;此区域的唯一目的就是存放对象实例,几乎所有的对象实例都存放在这一区域,但是随着JIT编译器的发展与逃逸分析技术的慢慢成熟,栈上分配、标量替换优化技术将会导致一些变化,所有对象实例都存放在这一区域也就不那么绝对了,目前我们仍认为该区域是对象实例存放的主要区域;它同时也是JAVA垃圾收集器管理的主要区域,故有时JAVA堆也称为GC堆。

     JAVA堆的分类:从内存回收的角度看,java堆可细分为:新生代、老年代,再细一点还可划分为Eden空间、From Survivor空间、To Survivor空间等。

5、方法区:其与java堆一样,是JVM中所有线程共享的内存区域,它用于存储已经被JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。很明显的,它与Java堆还是有明显区别的。在HotSpot虚拟机上,方法区有个别名叫“永久代(Permanent Generation Space 简称 PermGen Space)”,因为在Hot Spot虚拟机的GC分代收集实现中把方法区也纳入收集目标对象,只是该区域中的对象实例在JVM的生命周期内几乎都不会被回收,故称“永久代”。

对于其他虚拟机如BEA JRockit 、IBM J9 则不存在“永久代”这一叫法。

6、运行时常量池(Run time Constant Pool):它是方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一些常量信息,如各种字面量、符号引用等,这部分常量内容将在类加载后存放到方法区的运行时常量池中。

7、直接内存(Direct Memory):它并不是JVM运行时数据区的一部分,也不是JVM规范中定义的内存区域,但是这部分内存也被频繁地使用,而且也可能导致OutOfMemoryError异常出现。在使用NIO(New Input/Output)类时会接触到这一内存区域。
分享到:
评论

相关推荐

    Java虚拟机内存管理总结

    Java虚拟机内存管理总结 Java虚拟机(JVM)中的内存管理是指Java语言中对象的分配和释放问题。Java中的内存管理可以分为两部分:对象的分配和释放。 对象的分配是由程序完成的,程序员需要通过关键字new为每个对象...

    深入java虚拟机.pdf

    深入 Java 虚拟机.pdf Java 虚拟机(Java Virtual Machine,JVM)是 Java 语言的 runtime 环境,是 Java 程序...Java 虚拟机也提供了自动内存管理、垃圾收集、多线程支持等功能,提高了 Java 程序的可靠性和性能。

    JAVA虚拟机的内存管理

    ### JAVA虚拟机的内存管理详解 #### 一、引言 在Java 2平台的强大支持下,J2SE能够自动管理内存,这大大减轻了开发者的负担,让他们不必再进行复杂的显式内存管理工作。本文档旨在对Sun J2SE 5.0版本中的Java ...

    深入理解Java 虚拟机内存模型.rar

    Java虚拟机(JVM)内存模型是Java编程语言的核心组成部分,它定义了程序运行时的数据区域和内存管理方式。深入理解这一模型对于优化Java应用程序性能、避免内存泄漏以及理解线程安全至关重要。以下是对Java虚拟机...

    Java虚拟机规范中文版.pdf

    Java虚拟机还负责垃圾回收(Garbage Collection),即自动管理内存,释放不再使用的对象占用的内存,减轻程序员的负担。垃圾回收机制是Java语言与生俱来的特性之一,与C/C++等语言相比,Java的内存管理更简单、更...

    Java 虚拟机JVM内存模型

    ### Java 虚拟机JVM内存模型知识点 #### 1. JVM概述 ##### 1.1 Java的特性与JVM的应用 Java语言的特性包括跨平台性、面向对象、安全性等。JVM是Java程序能够跨平台运行的关键,它负责将Java源代码转换成与平台无关...

    Java虚拟机规范中文版(JavaSE7).pdf

    类加载是Java虚拟机启动时或运行时动态加载类的过程。它由类加载器系统执行,通常分为引导类加载器、扩展类加载器和应用程序类加载器。加载过程包括加载、验证、准备、解析和初始化五个阶段,确保加载的类符合规范且...

    30+个视频+深入理解Java虚拟机(jvm优化+内存模型+虚拟机原理)

    根据提供的文件标题、描述、标签以及部分内容,我们可以深入探讨与Java虚拟机(JVM)相关的多个核心知识点。以下是对这些主题的详细阐述: ### Java虚拟机(JVM)概述 Java虚拟机(JVM)是一种用于执行Java字节码的...

    Java虚拟机(Java VM) msjavax86 微软java虚拟机

    Java虚拟机的内部结构包括类装载器、运行时数据区、执行引擎、本地方法接口和本地库。其中,类装载器负责加载类文件,运行时数据区存储线程的工作数据,执行引擎解析并执行字节码,本地方法接口允许JVM调用非Java...

    java虚拟机

    Java虚拟机(JVM,Java Virtual Machine)是Java平台的核心组成部分,它负责执行Java程序,为Java代码提供了跨平台的运行环境。Java虚拟机的概念始于Sun Microsystems,现在由Oracle公司继续发展和维护。JVM的设计...

    深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理).zip

    《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...

    java虚拟机各种版本

    Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java程序提供了跨平台的运行环境。Java程序在编写完成后,会被编译成字节码(.class文件),这些字节码可以在任何装有JVM的系统上运行,实现了“一次编写,到处...

    Java运行原理与Java虚拟机.pdf

    ### Java运行原理与Java虚拟机 #### 一、Java运行原理概述 Java作为一种跨平台的编程语言,其独特之处在于它的编译和解释过程。Java程序的执行涉及到两个主要步骤:首先是编译阶段,其次是解释执行阶段。 1. **...

    java虚拟机常用命令

    在Java虚拟机运行过程中,我们可能需要使用各种命令工具来监控和诊断可能出现的问题。以下是一些常用的JVM命令工具及其知识点。 1. jps命令 jps(JVM Process Status Tool)命令用于列出正在运行的Java虚拟机进程...

    深入java虚拟机 高清pdf 高清高清高清

    它详尽地探讨了Java虚拟机的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,旨在帮助开发者提升程序的运行效率和稳定性。 1. **Java虚拟机概述**:Java虚拟机是Java平台的核心组件,它...

    利用JAVA虚拟机解决内存管理问题

    使用 JAVA 虚拟机解决内存管理问题 JAVA 虚拟机是运行在主操作系统顶层的软件层,使通讯程序、Java 应用程序与任何底层硬件的改变互不相关。虚拟机技术是 Java 成功地移植到嵌入式系统的关键。Java 虚拟机是一种...

Global site tag (gtag.js) - Google Analytics