JVM内存分析
文章平均质量分 63
系统分析java jvm的内存分配情况
翰霖学院
有六年JAVA开发经验,熟悉云计算与虚拟化
展开
-
JVM学习01:运行时数据区域-总体概述
简单介绍JVM运行时数据区域的划分,并且按照线程是否共享进行分类原创 2017-05-28 20:54:05 · 390 阅读 · 0 评论 -
JVM学习02:运行时数据区域-程序计数器
由于JAVA的多线程是通过线程轮流切换分配处理时间的方式实现,为了保证能够恢复到线程的正确位置,每个线程再启动的时候都会创建一块较小的内存区域,这块区域是线程隔离的,生命周期同线程绑定,线程结束,则释放该内存区域,可以看作是当前线程所执行的字节码的行号子令器。 字节码子令器的工作模式是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依原创 2017-05-29 17:38:21 · 745 阅读 · 0 评论 -
JVM学习03:运行时数据区域-JAVA虚拟机栈
与程序计数器一样,JAVA虚拟机栈也是线程私有,并且生命周期与线程相同。 由于虚拟机栈描述的是Java方法执行的内存模型,所以虚拟机栈主要存储的是方法相关的内容(方法参数、局部变量、返回值等);实现方式:当线程Thread1启动时,会在Java Stack中分配一块区域,用来存储需要执行相关方法的信息,当线程调用某个方法使,会同时创建一个栈帧(用于存储局部变量、操作栈、动态链接、方法出口等信息),原创 2017-05-30 15:53:42 · 1011 阅读 · 0 评论 -
JVM学习04:运行时数据区域-JAVA堆
The heap is the runtime data area from which memory for all class instances and arrays is allocated。Java heap是Java虚拟机中内存最大一块区域,也是最该小心的区域,因为内存溢出一般都在这块区域发生。Java heap是被线程共享的内存区域,在虚拟机启动的时候创建。该区域存储的是实例化对原创 2017-06-03 18:35:24 · 384 阅读 · 0 评论 -
JVM学习05:运行时数据区域-方法区
方法区与Java heap一样,是线程共享的区域,需要注意同步问题。该区域主要存储已被虚拟机加载的类的基本信息,比如,类的常量池、静态变量等。准确的说包括:类及其父类的全限定名(java.lang.Object没有父类)、类的类型(Class or Interface)、访问修饰符(public, abstract, final)、实现的接口的全限定名的列表、常量池、字段信息、方法信息、静态变量原创 2017-06-04 13:41:08 · 572 阅读 · 0 评论 -
JVM学习06:运行时数据区域-运行时常量池
基本描述运行时常量池是方法区的一部分,Class文件除了类信息、字段信息、方法信息、接口信息外还有一项信息是常量池(Constant Pool Table),用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。运行时常量池相对于Class文件常量池的另外一个重要特征是具备动态性,Java语言并不要求常量一定只能在编译期产生,也就是并非预置入Class文原创 2017-06-05 09:02:38 · 487 阅读 · 0 评论 -
JVM学习07:直接内存
划分直接内存不是虚拟机规范中定义的内存区域,也不是虚拟机运行时数据区域的一部分。属于堆外内存,也就是本机内存的一部分。使用场景在JDK 1.4中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引原创 2017-06-06 17:14:28 · 810 阅读 · 0 评论 -
JVM学习08:常量池知识点总结(完结)
常量池介绍-运行时常量池-基本数据类型常量池-class文件常量池-字符串常量池原创 2017-06-07 17:48:02 · 653 阅读 · 1 评论 -
JVM学习09:HotSpot虚拟机对对象的管理(完结)
对象创建对象在内存中的布局对象访问原创 2017-06-20 19:17:30 · 451 阅读 · 0 评论 -
JVM学习10:异常处理(持续更新)
在虚拟机规范的描述中,除了计数器之外的其他区域都有可能出现OutOfMemeoryError的异常。内存溢出测试方法如下图: 堆溢出代码package com.sunld;import java.util.ArrayList;import java.util.List;/** * -Xms10m -Xmx10m -XX:+HeapDumpOnOutOfMemoryErr原创 2017-07-04 10:23:33 · 438 阅读 · 0 评论