JVM
telenav_wjxie
这个作者很懒,什么都没留下…
展开
-
JVM 之 OopMap 和 RememberedSet
前几天看周志明的《深入 Java 虚拟机》,感觉对 OopMap 和 RememberedSet 的介绍,看起来不太容易理解清楚。今天查了一些资料,并结合自己的一些猜想,把对这两种数据结构的理解写出来。目的只是为了简单易懂,而且多有推测,可能会有一些理解上的偏差,请选择性阅读。 总体而言: OopMap 用于枚举 GC Roots ; RememberedSet 用于可达性分析。 ...2015-04-12 17:28:06 · 549 阅读 · 2 评论 -
JVM 新生代为何需要两个 Survivor 空间?
我们知道,目前主流的虚拟机实现都采用了分代收集的思想,把整个堆区划分为新生代和老年代;新生代又被划分成 Eden 空间、 From Survivor 和 To Survivor 三块区域。 看书的时候有个疑问,为什么非得是两个 Survivor 空间呢?要回答这个问题,其实等价于:为什么不是0个或1个 Survivor 空间?为什么2个 Survivor 空间可以达到要求? [colo...2015-04-12 17:39:21 · 433 阅读 · 0 评论 -
JVM 类加载过程
以下内容摘抄自周志明的《深入理解 Java 虚拟机》,自己也似懂非懂,仅仅是做个总结。 1. 加载。 1). 通过一个类的全限定名获取该类的二进制字节流; 2). 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构; 3). 在内存中生成一个代表这个类的 java.lang.Class 对象,作为该类的访问入口。 2. 验证。 1). ...原创 2015-04-13 18:15:19 · 139 阅读 · 0 评论 -
Tomcat 类加载过程
以下内容部分来自网络,如有侵权,请站内联系。 Tomcat 下的工程,使用 WebappClassLoader 进行类的加载。查看 WebappClassLoader 源码,可以总结出 Tomcat 的类加载过程如下: 1. 先在自己(即当前 WebappClassLoader)的缓存中查找,有则返回,无则继续; 2. 再递归地在 parent 的缓存中查找,有则返回,无则继续; 3....2015-04-13 18:31:46 · 161 阅读 · 0 评论 -
JIT 之方法内联
本文主要摘自周志明《深入理解 Java 虚拟机: JVM 高级特性与最佳实践》 什么叫方法内联? 方法内联就是把目标方法的代码“复制”到发起调用的方法之中,避免发生真实的方法调用。 方法内联有什么好处? 1). 消除方法调用的成本,如无需再建立新的栈帧; 2). 为其它优化手段建立良好的基础,如无用代码消除等。 Java 虚拟机中方法内联面临的难题。 Java 虚拟机中的...原创 2015-04-13 22:40:57 · 436 阅读 · 0 评论 -
Java 平台无关性和 Java 内存模型
我们知道, [b][color=red]Java 虚拟机是平台无关性的基石。[/color][/b] 在我看来,它有两层意思,仅供参考,做不得数。 首先, Java 语言规范定义了一套统一的 API (可以把它看成一个 Facade),同时各个平台有自己专有的虚拟机。 Java API 在不同的虚拟机上,最终调用了自身操作系统下的功能函数(如 dll),所以从外部来看, Java AP...2015-04-18 15:12:06 · 113 阅读 · 0 评论