
JVM
文章平均质量分 80
也许我们天天都会写java代码,但是我们可能并都不知道java代码在JVM是什么样子的,是具体怎么运行的。在这里我主要由浅入深的系统的介绍JVM的相关知识,包括JVM的优化等
孙悟空2015
追根溯底,回归本质,挖掘兴趣,激发思考。
展开
-
深入理解JVM:OutOfMemory实战
除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(OOM),下面我们来详细分析。 Java堆溢出 Java堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制来清除这些对象,那么对象数量到达最大堆容量限制后就会产生内存溢出异常。例如:// VM Args:-Xms20m -Xmx20m -XX:+HeapD原创 2015-08-13 18:24:11 · 1927 阅读 · 4 评论 -
深入理解JVM:垃圾收集器与内存分配策略
堆里面存放着Java世界几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还存活,哪些已经死去。判断对象的生命周期是否结束有以下几种方法 引用计数法 具体操作是给对象添加一个引用计数器,每当有一个地方引用时,计数器的值就加1,;当引用失效时,计数器就减1;任何时刻计数器为0的对象就 是不可能再被使用的。客观的说引用计数器算法实现简单,判定效率也很高,在大部分情况原创 2015-08-18 20:05:03 · 1085 阅读 · 0 评论 -
深入理解JVM:垃圾收集算法
标记-清除算法 首先标记出所有需要回收的对象,在标记完成以后统一回收所有被标记的对象,之所以说他是最基础的收集算法,是因为后续收集算法都是基于这种思路并对其不足进行改进而得到的。他的不足主要有两个:一是效率问题,标记和清除过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续内存碎片,碎片太多会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收原创 2015-09-07 16:47:31 · 735 阅读 · 0 评论 -
深入理解JVM:HotSpot虚拟机对象探秘
对象的创建 java是一门面向对象的语言,在Java程序运行过程中无时无刻有Java对象被创建出来。在语言层面上,创建对象(克隆、反序列化)通常是一个new关键字而已,而在虚拟机中,对象的创建过程如下: 1、当虚拟机遇到new指令时,首先将去检查这个指令参数是否能在常量池中定位到一个类的引用符号,并且检查这个符号引用代表的类是否被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。原创 2015-08-11 19:17:17 · 2208 阅读 · 2 评论 -
深入理解JVM:JVM运行时数据区域分类
JVM在执行java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途和创建、销毁时间。有些区域随着虚拟机的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范1.7》规定,Java虚拟机所管理的内存分为以下几个区域: 程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行时常量池、直接内存 程序计数器 是一块较小的内存原创 2015-08-09 19:43:49 · 2146 阅读 · 1 评论