jvm - 内存结构以其解析

可以将jvm粗略分为以下部分:

  • Heap Memory:存储java对象.
  • Non-Heap Memory:存储加载的class文件,以及其他meta-data信息.
  • Other:存储java代码,jvm内部结构等.

Heap Memory:

  是在jvm启动的时候分配的

  -Xmx<size>:设置堆的最大大小.

  -Xms<size>:设置初始的对大小.

  默认情况下,堆的最大大小是64MB,堆是否是固定大小,可扩展都是有gc策略决定的.

  可以通过:-XX:MaxPermSize设置堆的大小,如:-XX:MaxPermSize=128m.

可以在"Memory‘下查看heap和non-heap的信息:

Used Heap Memory: Live and Dead Objects

  Used heap memory consists of live and dead objects.  

  Live objects are accessible by the application and will not be a subject of garbage collection.

  Dead objects are those which will never be accessible by the application but have not been collected yet by the garbage collector.

  Class list同时显示live and dead objects,可以通过查看gc发生时对象的数量变化来分析情况.

ref: http://www.yourkit.com/docs/kb/sizes.jsp

http://blog.csdn.net/autofei/article/details/7456213

时间: 2024-08-10 23:30:20

jvm - 内存结构以其解析的相关文章

JVM入门——JVM内存结构

一.java代码编译执行过程 1.源码编译:通过Java源码编译器将Java代码编译成JVM字节码(.class文件) 2.类加载:通过ClassLoader及其子类来完成JVM的类加载 3.类执行:字节码被装入内存,进入JVM虚拟机,被解释器解释执行 注:Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个平台的通道,   用Java语言编写并编译的程序可以运行在这个平台上 二.JVM简介 1.java程序经过一次编译之后,将java代码编译为字节码也就是class

JVM内存结构

一.JVM内存结构 1.1 下面总体说说内存 Java虚拟机会将内存分为几个不同的管理区,这些区域各自有各自的用途,根据不同的特点,承担不同的任务以及在垃圾回收时运用不同的算法.总体分为下面几个部分: 程序计数器(Program Counter Register).JVM虚拟机栈(JVM Stacks).本地方法栈(Native Method Stacks).堆(Heap).方法区(Method Area) 1.2 下面说说具体各个结构的功能 1.2.1.程序计数器(Program Counte

JVM内存结构——运行时数据区

在Java虚拟机规范中将Java运行时数据划分为6种,分别为: PC寄存器(程序计数器) Java栈 堆 方法区 运行时常量池 本地方法栈 一.PC寄存器(程序计数器) PC寄存器(Program Counter Register)严格来说是一个数据结构,它用于保存当前正常执行的程序的内存地址. 线程私有. 每个线程启动的时候,都会创建一个PC(Program Counter,程序计数器)寄存器.PC寄存器里保存有当前正在执行的JVM指令的地址. 每个线程都需要一个独立的程序计数器,各条线程之间

jvm系列(二):JVM内存结构

原文出处:纯洁的微笑 所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问题,以便于快速的解决生产故障. 先看一张图,这张图能很清晰的说明JVM内存结构布局. JVM内存结构主要有三大块:堆内存.方法区和栈.堆内存是JVM中最大的一块由年轻代和老年代组

JVM活学活用——Jvm内存结构

Java内存结构: JVM内存结构主要是有三大块:堆内存.方法区和栈.堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分为三部分,Eden空间.From Survivor空间.To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配: 方法区存储类信息.常量.静态变量等数据,是线程共享的区域,为与Java堆区分,方法区还有一个别名Non-Heap(非堆): 栈又分为Java虚拟机栈和本地方法栈,主要用于方法的执行. 在通过一张图来了解如何通过参数来控制各区域的内存大

JVM内存结构 VS Java内存模型 VS Java对象模型

Java作为一种面向对象的,跨平台语言,其对象.内存等一直是比较难的知识点.而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚.比如本文我们要讨论的JVM内存结构.Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混.可以这样说,很多高级开发甚至都搞不不清楚JVM内存结构.Java内存模型和Java对象模型这三者的概念及其间的区别.甚至我见过有些面试官自己也搞的不是太清楚.不信的话,你去网上搜索Java内存模型,还会有很多文章的内容其实介绍的是JVM内存结构.首

【转】JVM内存结构 VS Java内存模型 VS Java对象模型

JVM内存结构 我们都知道,Java代码是要运行在虚拟机上的,而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途. 其中有些区域随着虚拟机进程的启动而存在,而有些区域则依赖用户线程的启动和结束而建立和销毁.在<Java虚拟机规范(Java SE 8)>中描述了JVM运行时内存区域结构如下: 各个区域的功能不是文本重点,就不在这里详细介绍了.这里简单提几个需要特别注意的点: 1.以上是Java虚拟机规范,不同的虚拟机实现会各有不同,但是一般会遵守

[转帖]JVM内存结构 VS Java内存模型 VS Java对象模型

JVM内存结构 VS Java内存模型 VS Java对象模型 https://www.hollischuang.com/archives/2509 Java作为一种面向对象的,跨平台语言,其对象.内存等一直是比较难的知识点.而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚.比如本文我们要讨论的JVM内存结构.Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混. 可以这样说,很多高级开发甚至都搞不不清楚JVM内存结构.Java内存模型和Java对象模型这三者

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

Java作为一种面向对象的,跨平台语言,其对象.内存等一直是比较难的知识点.而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚.比如本文要讨论的JVM内存结构.Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混. 首先,这三个概念是完全不同的三个概念.本文主要目的是对这三个概念加以区分以及做简单的介绍.而这每一个知识点都是又都是比较复杂的.以后会单独写文章做详细介绍. Jvm内存结构 我们都知道,Java代码是要运行在虚拟机上的,而虚拟机在执行Java程序的过