转载自:http://chenzhou123520.iteye.com/blog/1597597 Java虚拟机规范没有强制性约束在什么时候开始类加载过程,但是对于初始化阶段,虚拟机规范则严格规定了有且只有四种情况必需立即对类进行“初始化”(而加载、验证、准备阶段则必需在此之前开始),这四种情...
分类:
编程语言 时间:
2015-08-28 00:33:27
阅读次数:
212
网上找了一大圈,对于java虚拟机,还是不清不楚。这张算是比较靠谱的图了。自己参考Java虚拟机规范 Java SE7版,研究了下java虚拟机的结构,浅显理解吧。下面根据这个图,理解下各个部分。...
分类:
编程语言 时间:
2015-08-26 01:57:54
阅读次数:
278
java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区,其架构如下:
其中方法区和堆是由所有线程共享的数据区。
Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数据区。
(1).程序计数器:
是一块较小的内存空间,其作用可以看作是当前线程所执行的字节码的行号指示器,字节码解析器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。程...
分类:
编程语言 时间:
2015-08-20 01:34:28
阅读次数:
155
JVM在执行java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途和创建、销毁时间。有些区域随着虚拟机的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范1.7》规定,Java虚拟机所管理的内存分为以下几个区域:
程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行时常量池、直接内存
程序计数器
是一块较小的内存...
分类:
其他好文 时间:
2015-08-09 20:47:15
阅读次数:
132
|--方法区【线程共享】 ?? ??? ??? ?被所有线共享。 ?? ??? ??? ?存储被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码。 ?? ??? ??? ?在Java虚拟机规范把此区描述为堆...
分类:
其他好文 时间:
2015-08-07 16:39:45
阅读次数:
126
2015年技术类《linux鸟哥的私房菜》2th Edition《大型网站网站系统与Java中间件实践》 已完成《大型网站技术架构核心原理与案例分析》《Java虚拟机规范 Java SE 7版》 已完成《Lucene实战》 已完成《第一本Docker书》《Spark大数据处理技术》《从Paxos到Z...
分类:
其他好文 时间:
2015-07-28 22:47:17
阅读次数:
183
最近因项目存在内存泄漏,故进行大规模的JVM性能调优?,?现把经验做一记录。 一、JVM内存模型及垃圾收集算法 ?1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) ? ...
分类:
其他好文 时间:
2015-07-26 19:25:43
阅读次数:
275
Java中,除了基本类型,其他类型都属于类/接口类型。从讨论数据抽象的角度看,基本类型是更适合的标的物,因为从Java虚拟机规范和Java虚拟机实现层面,基本类型有了有效的接口与实现分离。而类/接口类型的数据抽象,通常我们介绍封装、信息隐藏和类的接口等概念,它们说明Java类作为数据抽象,用户需要了解的是类的接口。
Scheme中,我们可以从基本类型构造新数据类型,换言之,我们可以赤裸裸地观察新...
分类:
编程语言 时间:
2015-07-17 19:04:59
阅读次数:
136
java对象在访问的时候,我们需要通过java虚拟机栈的reference类型的数据去操作具体的对象。由于reference类型在java虚拟机规范中只规定了一个对象的引用,并没有定义这个这个引用应该通过那种方式去定位、访问java堆中的具体对象实例,所以一般的访问方式也是取决与java虚拟机的类型。目前主流的访问方式有通过句柄和直接指针两种方式。
1.句柄访问
使用句柄访问方式,j...
分类:
编程语言 时间:
2015-07-10 19:14:30
阅读次数:
156
前面已经介绍硬件平台Cache Coherence问题和解决办法,下面来看看Java虚拟机平台的相关知识。硬件平台处理器,高速缓存,主存之间的交互关系如下:Java内存模型(JMM) Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model, JMM)来屏蔽掉底...
分类:
移动开发 时间:
2015-07-05 22:24:38
阅读次数:
253