在水木上看到了一则关于撒加的文章,于是看了看它关于JVM的介绍,并开始收集了关于JVM的资料,并开始查看JVM spec.网上有中文和英文两个版本
书中从第三章开始步入正题介绍了关于JVM的基本概念,CLASS文件的结构,常量池及其解析。并在后面介绍了JVM的基本指令集,一般JAVA源码的编译和一些优化。其中最重要的还是前面的基本概念,这里是看懂JVM指令代码的基础。因为是Spec,所以它的宗旨是介绍Class文件格式及其其中的含义,并为JVM提供解析Class文件并运行它提供一个准则。也就是说,Class文件也可以由其他语言例如C语言实现。只要Class文件满足Spec,并通过JVM的链接过程。
JVM运行是基于以下数据的:
1 运行期数据,包括:PC寄存器,Java栈,堆,方法区。
A PC寄存器
和普通汇编指令中的没有什么区别
B Java栈
每个线程拥有一个栈,这点和以前的常识一样。它的作用主要存储JVM框架,其实就是栈帧。栈帧包括:局部变量表,操作数栈及一些其他引用信息。这些引用信息包括方法和类实例的引用。运行期间会利用这些信息进行一些连接操作。
C Java堆
所有线程共享此存储区。用于运行期间new object或者new array,交由GC进行回收。
D 方法区
这部分也是所有线程共享的,GC也可以进行回收它。可以将它理解为汇编代码中的正文段,它包含:常数池,域,方法数据,方法,构造函数以及<init><clinit>代码。
a 常数池
相当于Symbol表,对应于class文件中的constant_pool
b 自身方法栈
这个是为Native方法服务的,可以设置它的大小。
c 方法,构造行数及<init><clinit>代码
就是执行代码,对应于class文件中的methods
d 域
对应于class文件中fields
e 接口
对应于class文件中interfaces
在class文件加载的时候建立方法区,当进行方法调用的时候会操作Java栈,并有可能因为创建实例或数组操作Java堆。我们可以先从Class文件结构开始来了解方法区的布局,并创建它的数据结构
分享到:
相关推荐
总共110讲,非常适合jvm初学者,希望对大家有所帮助,奋斗吧少年
JVM监控工具使用入门,对初学这帮助很大
整理好了JVM虚拟机的原理,适合初学者理论,也适合找工作面试的。内附运行图,思维导图,文字详解,并有相关算法的详解的方式供大家理解,请大家多多支持!
eta, 在JVM上,Eta编程语言,Haskell的方言 - 在JVM上的现代 Haskell Eta编程语言是在JVM上运行的Haskell方言,具有以下目标:命令式语言的初学者,特别是Java的辅助功能GHC 7.10.3 Haskell的兼容性。访问 eta
初学者想要对jvm垃圾回收有比较全的了解和认识,这个PPT正是你所需要的,希望对你有用,也感谢原资源分享者!
java初学者了解jvm相关知识增强
适合初学JVM优化,有一些基础的指令,还有视图工具方便查看jvm堆内存的使用 还有简单死锁的案例
全网最全的JVM思维导图,总体分基础、进阶、底层,包含工具,内有实战案例,适合初学者到P7技术专家。
Java集合、JVM面试题,包括Java集合、JVM内存模型、垃圾回收机制、JVM调优、异常处理等相关面试题 ...适用于Java编程的初学者,加强自身对于Java集合、JVM、异常处理等方面的知识储备,更好的应对面试机会
Cucumber-jvm-教程这是一个初学者使用cucumber-jvm学习行为驱动开发(BDD)的教程。 本教程包括以下步骤我们首先浏览一个骨架 Eclipse 项目。 我们使用 XMind 的思维导图技术探索需求。 然后我们将需求从 XMind 导出...
深入JVM内核—原理、诊断、优化视频教程 总共11集 适合初学者入门
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解是Java开发工具包,JRE(Java Runtime Enviroment)是Java的运行环境,JVM( java virtual machine)也...
Java编译的单位换算器,无需JVM,可以直接安装 这个是rar part2,part1在我的资源里面找(。。没有办法啦~每次只能上传20MB) 该软件我觉得是解决了很会初学Java的人的问题,例如图片应该如何载入在别的机子上运行...
此文对于java初学者,想了解清楚java内存结构的童鞋,很有参考价值
java开发基本知识点整理,面试常用问题整理,WEB 前端基础,HTTP 状态消息,抽象类和接口,面向对象编程的原则,封装,继承和多态,字节流与字符流的区别,垃圾回收的优点和原理,什么是线程安全,同步和异步有什么...
Java编译的单位换算器,无需JVM,可以直接安装 这个是rar part1,part2在我的资源里面找(。。没有办法啦~每次只能上传20MB) 该软件我觉得是解决了很会初学Java的人的问题,例如图片应该如何载入在别的机子上运行...
主要介绍了java环境中的JDK、JVM、JRE详细介绍的相关资料,对于初学者还是有必要了解下,细致说明他们是什么,需要的朋友可以参考下
初学Java——Java语言继承了Smalltalk的OOP的特性,是广泛运用的编程语言中的OOP的代表 再学Java——适用于网络开发的平台无关性语言,在Java的Object对象实现了wait,notify的对象级别的多线程的管程机制,让每一个...
摇滚jvm-scala初学者
其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。 1、 ...