jvm
文章平均质量分 79
chengshiep
这个作者很懒,什么都没留下…
展开
-
类加载机制
加载类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对象,作为方法区这个类的数据访问的入口。也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。具体包括以下三个部分:(1)通过类的全名产生对应类的二进制数据流。(根据early load原理,如果没找到对应的类文件,只有在类实际使用时才会抛出错误)(2)分析并将这些二进制数据流转载 2016-03-17 15:41:30 · 330 阅读 · 0 评论 -
JVM:内存溢出问题
Java虚拟机规范规定JVM的内存分为了好几块,比如堆,栈,程序计数器,方法区等,而Hotspot jvm的实现中,将堆内存分为了两部:新生代,老年代。在堆内存之外,还有永久代,其中永久代实现了规范中规定的方法区,而内存模型中不同的部分都会出现相应的OOM错误,接下来我们就分开来讨论一下。栈溢出(StackOverflowError) 栈溢出抛出StackOverflowError错误,出现此种原创 2016-03-16 09:52:43 · 372 阅读 · 0 评论 -
JVM:垃圾回收问题
在什么时候回收首先需要知道,GC又分为minor GC 和 Full Gc。Java 堆内存分为新生代和老年代,新生代中又分为1个Eden区域 和两个 Survivor区域,当Eden区域内存不足的时候,就会触发minor GC,当老年代内存不足的时候,就会触发Full GC。但是,具体到什么时刻执行,这个是由系统来进行决定,是无法预测的。哪些需要回收主要根据可达性分析算法,如果一个对象不可达,那么原创 2016-03-16 10:07:11 · 324 阅读 · 0 评论 -
JVM:编译加载与自定义类加载器
编译机制编译主要是把 .java 文件转换为 .class 文件。其中转换后的 .class 文件就包含了元数据,方法信息等一些信息。比如说元数据就包含了 Java 文件中声明的常量,也就是我们所说的常量池。类加载机制JVM 是通过 一个称为 ClassLoader 的东西 来加载 class 文件,每当 JVM 启动的时候,就会产生 三个 ClassLoader,它们分别是Bootstrap Lo原创 2016-03-16 13:48:44 · 348 阅读 · 0 评论 -
JVM:内存结构和相关参数
Java 整体内存结构 JVM内存区域分为PC寄存器,JVM方法栈,本地方法栈,JVM方法区,JVM堆PC寄存器:存放下一条指令在方法中的偏移量。也可以看做是线程所执行的字节码的行号指示器,字节码解释器的工作就是通过改变这个计数器的值来选取下一条需要执行的指令。JVM方法栈:PC寄存器,JVM方法栈,和本地方法栈都是线程私有。在JVM方法栈有,有局部变量区和操作数区。人们经常说的JVM内存分为堆内原创 2016-03-16 09:32:01 · 390 阅读 · 0 评论