方法区:存放着虚拟机已经加载的类信息、常量、静态变量等数据,是线程共享的。人们习惯将方法去称为“永久区”,这仅仅是因为hotspot虚拟机将GC分代回收扩展到了方法区的缘故。
运行时常量池是方法区的一部分,Class文件除了有类的字段,类型,方法,接口等信息之外,还有一项是常量池,用于存放编译期生成的字面量和符号引用等,这些内容在类加载的时候就被存放在方法区的运行时常量池里面;Java虚拟机规范规定,当方法区无法满足内存需求的时候,就会抛出OutOfMemeryError异常
堆:java堆是虚拟机管理的最大内存区域,是被所有线程共享的。Java堆存放着对象实例数据,虚拟机规范中指出,所有的对象实例以及数组都要在堆上分配,但随着技术的发展,这种说法已经逐渐的变得不那么绝对了。虚拟机规范规定,当java堆不能满足对象实例分配,并且堆无法再扩展,则会抛出OutOfMemeryError异常
虚拟机栈:描述这java方法执行的内存模型,每个方法执行的时候会创建一个栈帧,用于存放局部变量表(存放着基本数据类型和对象引用),操作数栈,方法出口等信息。方法执行直到完成的过程,就对应着一个栈帧的出栈和入栈过程。Java虚拟机栈是线程独立的,栈的生命周期也就是线程的生命周期。虚拟机规范规定了两种异常的情况,第一、线程的请求深度超过了虚拟机规定的最大栈深度,则抛出StackOverflowError异常;第二、如果栈可以动态的扩展,在扩展的时候没能申请到足够的空间,则抛出OutOfMemeryError异常
本地方法栈:此栈的作用域虚拟机栈非常相似,其区别不过就是java虚拟机栈执行的是java方法,而本地方法栈执行的是java需要的native服务。因此它也有上述两种异常的情况
程序计数器:可以简单的认为,程序计数器是字节码的指示器;计数器记录的是正在执行的虚拟机字节码的地址,如果是执行本地方法,则改计数器为空
直接内存:这部分是java虚拟机规范没有定义的,称为堆外内存;直接内存不受java堆内存大小的限制,但是如果堆内存和直接内存的总和大于机器的内存,同样会抛出异常。
常见配置
-Xms:设置虚拟机内存堆的初始大小,缺省是字节为单位;eg.-Xms128M
-Xmx:设置虚拟机内存堆的最大值,缺省也是以字节为单位;eg.-Xmx512M
-Xss:设置虚拟机栈的大小,设置方法同上
-XX:PermSize:设置非堆内存初始内存(即方法区内存,方法区也叫Non-Heap);eg.-XX:PermSize=64M
-XX:MaxPermSize:设置非堆内存最大内存;eg.-XX:PermSize=128M
-XX:MaxDirectMemorySize:设置直接内存容量,没指定,则与堆最大值一样;eg.-XX:MaxDirectMemorySize=128M
相关推荐
JVM规范定义了JVM的结构、指令集和运行时数据区,以及如何执行指令和处理异常。自1999年以来,JVM规范经历了多次更新,而在2011年发布的JavaSE7版则带来了新的变化。 《Java虚拟机规范(JavaSE7版)》为想要了解...
自1999年《Java虚拟机规范(第二版)》发布以来,尽管JDK在版本5时进行了重大更新,但直到2011年7月,《Java虚拟机规范(JavaSE7版)》才正式发布。这标志着JVM技术的持续演进和标准化进程的重要里程碑。随着时间...
6. 规范的作用:JVM规范作为Java平台的基础性文档,规定了JVM的内部架构、数据类型、指令集、运行时数据区、垃圾收集机制等核心内容,是Java开发者和虚拟机实现者必须遵循的标准。 综合以上内容,我们可以看到...
在IT行业中,Java虚拟机(JVM)是Java程序运行的核心,它负责解析并执行Java字节码。本文将深入探讨Java虚拟机的参数配置,特别是针对MyEclipse开发环境中遇到的内存不足问题。 首先,Java虚拟机参数配置是优化JVM...
JVM规范是一份详细说明Java虚拟机工作方式的文档,它定义了虚拟机的指令集、数据类型、堆栈结构、垃圾回收机制等一系列实现细节。对于Java程序员而言,深入学习JVM规范有助于加深对Java语言底层运行原理的理解,提升...
本书共分20章,第1-4章解释了java虚拟机的体系结构,包括java栈、堆、方法区、执行引擎等;第5-20章深入描述了java技术的内部细节,包括垃圾收集、java安全模型、java的连接模型和动态扩展机制、class文件、运算及...
本书涵盖了JVM的基本概念、数据类型、运行时数据区、指令集等核心内容,并提供了详细的规范说明。 #### 核心知识点 **1. Java虚拟机简介** - **历史背景**: Java虚拟机的历史可追溯至1995年,随着Java语言的诞生...
Java虚拟机(JVM)是Java程序运行的核心组件,它为Java代码提供了跨平台的运行环境。Java SE 7(Java Standard Edition 7)是Java语言的一个重要版本,引入了许多新特性和改进,使得开发更加高效和灵活。下面将详细...
定义 简介 特点 使用主题 安装方法 支持的数据类型 规格描述 JVM指令系统 JVM寄存器 JVM栈结构 JVM碎片回收堆 体系结构 8.1Java指令集 ... 8.5方法区 JVM的运行过程 Java虚拟机命令行参数说明 JVM存储区
2. **JAVA虚拟机运行机制概览** - **运行时分析**:JVM在运行时主要分为几个关键部分,包括类加载器、运行时数据区、执行引擎、本地方法接口和本地库。这些组件协同工作,确保程序的正常执行。其中,堆内存用于存储...
JVM包括类加载器、运行数据区、执行引擎、本地方法接口和本地方法库。这些组件协同工作,使得Java程序能够在不同的操作系统上无缝运行。 2. **类加载机制**:JVM通过类加载器动态地加载类到内存中。这个过程包括...
以下是关于Java虚拟机及其相关知识点的详细说明: 1. **Java虚拟机的定义**: - **抽象规范**:Java虚拟机的规范定义了它的行为和功能,是一种理论模型。 - **具体实现**:不同的厂商根据规范实现自己的JVM,如...
该书详细定义了JVM的语义,包括字节码指令的解释、运行时数据区的结构、方法调用的实现、线程管理、内存管理和安全特性等。此外,它还涵盖了JVM在多线程环境下的行为,以及如何处理各种错误和异常。 学习JVM的知识...
《Java虚拟机规范(Java SE 7版)》是一份详细介绍了Java虚拟机(JVM)架构和运行机制的重要文档。这份规范不仅是Java开发人员深入了解Java语言特性的必备资料,也是Java虚拟机实现者们遵循的标准指南。本文将基于提供...
在讨论Java 14虚拟机规范之前,需要明确Java虚拟机(JVM)是Java平台的核心组成部分,它负责运行Java程序。JVM规范定义了JVM的功能和行为。Java 14是Java平台的第14个主要版本,提供了新的特性和改进,对JVM规范也...