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

Java虚拟机运行时数据区说明

    博客分类:
  • java
阅读更多

数据区

 

方法区:存放着虚拟机已经加载的类信息、常量、静态变量等数据,是线程共享的。人们习惯将方法去称为“永久区”,这仅仅是因为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

分享到:
评论

相关推荐

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

     本书共分20章,第1-4章解释了java虚拟机的体系结构,包括java栈、堆、方法区、执行引擎等;第5-20章深入描述了java技术的内部细节,包括垃圾收集、java安全模型、java的连接模型和动态扩展机制、class文件、运算及...

    JAVA虚拟机.ppt

    定义 简介 特点 使用主题 安装方法 支持的数据类型 规格描述 JVM指令系统 JVM寄存器 JVM栈结构 JVM碎片回收堆 体系结构 8.1Java指令集 ... 8.5方法区 JVM的运行过程 Java虚拟机命令行参数说明 JVM存储区

    Java虚拟机规范(Java SE 7)

    2.5 运行时数据区 ................................................... 27 2.5.1 PC寄存器 ................................................ 28 2.5.2 Java虚拟机栈 .............................................

    java虚拟机详解.docx

    当虚拟机装载类文件的时候,它解析其中的二进制数据所包含的类信息,并把它们放到方法域中;当程序运行的时候,JVM把程序初始化的所有对象置于堆上;而每个线程创建的时候,都会拥有自己的程序计数器和 Java栈,其中...

    Java虚拟机规范(Java SE 7).pdf

    2.5 运行时数据区 ................................................... 27 2.5.1 PC寄存器 ................................................ 28 2.5.2 Java虚拟机栈 .............................................

    深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)视频教程

    第20节Java虚拟机-高性能Java虚拟机00:02:58分钟 | 第21节Java虚拟机-TaobaoVM00:03:06分钟 | 第22节Java内存区域-简介00:07:56分钟 | 第23节Java内存区域-Java虚拟机栈00:12:04分钟 | 第24节Java内存区域-程序...

    java8看不到源码-java-virtual-machine:Java虚拟机和Grafana仪表板的基本JMX数据收集

    看不到源码Java虚拟机 OpenNMS 配置以使用 Java 管理扩展 (JMX) 从 Java 虚拟机监控性能指标。 此配置已通过以下测试: CentOS 7 与 OpenJDK 运行时环境 (1.8.0_181-b13) 带有 OpenNMS Helm 2.0.0 的 Grafana 5.3.1 ...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    Java异常架构详细介绍与说明(值得珍藏)

    Java异常架构主要由以下几个部分组成: ...RuntimeException:这类异常是那些可能在Java虚拟机正常运行期间抛出的异常的超类。例如,除数为零时,会抛出ArithmeticException异常。编译器不会检查RuntimeException异常。

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-047-Java基本语法-变量用法的进一步说明.avi 北京动力节点-Java编程零基础教程-048-Java基本语法-什么是字符编码.avi 北京动力节点-Java编程零基础教程-049-Java基本语法-通过...

    计算机毕业设计 - JAVA002打飞机游戏设计(程序+说明+论文),保证可靠运行

    Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。Java的数据类型与机器无关。 2. 安全性 Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以...

    java开源包4

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包101

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包11

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包6

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包9

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包8

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包5

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

Global site tag (gtag.js) - Google Analytics