以下内容来自周志明的《深入理解Java虚拟机》。 学习JEE规范,去看JBoss源码;学习类加载器,就去看OSGI源码。 OSGI,即Open Service Gateway Initiative,是一个基于Java语言的动态模块化规范。 一个模块只有Export过的package才能由外接访问。 ...
分类:
其他好文 时间:
2016-04-23 23:00:34
阅读次数:
212
一、类加载过程 执行时机:编译程序——>执行程序(JVM启动、程序运行),类加载发生在程序运行期间 各个阶段:分为加载阶段、连接阶段(验证、准备、解析)、初始化、使用、卸载 执行顺序:大体是按以上阶段依次执行,但相互间有交叉 加载——>验证(文件格式)——>继续加载——>解析——>验证(元数据、字节 ...
分类:
编程语言 时间:
2016-04-16 10:53:07
阅读次数:
249
以下内容大多来自周志明的《深入理解Java虚拟机》。 类加载器是java的一项创新,也是java流行的重要原因之一,它最初是为了满足java applet的需求而开发出来。 什么是applet? 作为新手,都不知道applet是什么鬼,看看百度百科的解释,应该就明白了: JavaApplet就是用J ...
分类:
编程语言 时间:
2016-04-16 10:44:22
阅读次数:
152
以下内容来自周志明的《深入理解java虚拟机》: 类初始化阶段是类加载过程的最后一步,前面的类加载过程中,除了在加载阶段用户应用程序可以通过自定义类加载器参与之外,其余动作完全由虚拟机主导和控制。 到了初始化阶段,才真正开始执行类中定义的Java程序代码(或者说是字节码)。 在准备阶段,变量已经赋过 ...
分类:
编程语言 时间:
2016-04-11 23:54:12
阅读次数:
227
1.产生 源码(.java文件)——>编译器(如:javac)——>字节码(.class文件)——>虚拟机(如:HotSpot)执行 2.Class文件 1)构成: 2)例子: [1] .java文件 桌面/test/test/Father.java、桌面/test/test/Father_inte ...
分类:
编程语言 时间:
2016-04-11 08:43:40
阅读次数:
228
一个int类型4占4个字节的内存,一个byte一个字节。但是他们的封装类型Integer,Byte对象内存损耗还是一样的吗?并不是,而且差距十分大。
HotSpot虚拟机中,一个普通的Java对象由3部分构成
对象头类内定义的实例数据内存对齐
2不必多说,Java对象不存定义好的实例字段存啥。
对象头又分两部分,Mark Word和类型指针。Mark W...
分类:
编程语言 时间:
2016-03-31 11:04:45
阅读次数:
185
原文出处:http://www.open-open.com/lib/view/open1423111722764.html 原文出处: cnblogs-zhanjindong 最近在读《深入理解Java虚拟机》,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一 ...
分类:
编程语言 时间:
2016-03-30 23:48:00
阅读次数:
305
看深入理解java虚拟机(第二版)的时候,作者在226页给出了一段代码,说明类加载器的阻塞问题,感觉这段代码和书中给出的结果有偏差,自己验证了下,和书中的代码运行结果不一致。
分类:
编程语言 时间:
2016-03-17 14:22:43
阅读次数:
175
一、本文参考: 1.《深入理解java虚拟机 JVM高级特性与最佳实践》 2. http://coderevisited.com/memory-leaks-in-java/ 二、对象已死的判定方法 要进行JVM中对象回收首先要判断对象是否已经死亡,判断的方法有如下几个: 1.引用计数法 给对象中添加
分类:
编程语言 时间:
2016-03-08 02:03:07
阅读次数:
256
通过JVM自身的物理结构,我们可以从下图了解: JVM 类加载机制: JVM的类加载通过ClassLoader及其子类来完成: 1.Bootstrap ClassLoader 负责加在$JAVA_HOME中 jre/lib/rt.jar里所有的类,由C++实现,不是ClassLoader的子类 2、...
分类:
编程语言 时间:
2016-03-07 11:55:45
阅读次数:
161