`
king523103
  • 浏览: 8322 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

JVM初学一

    博客分类:
  • JVM
 
阅读更多
在水木上看到了一则关于撒加的文章,于是看了看它关于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文件结构开始来了解方法区的布局,并创建它的数据结构
   
   
分享到:
评论

相关推荐

    深入理解JVM性能调优和内存模型,垃圾回收,虚拟机原理,经典视频教程

    总共110讲,非常适合jvm初学者,希望对大家有所帮助,奋斗吧少年

    JVM监控工具使用入门

    JVM监控工具使用入门,对初学这帮助很大

    JVM原理一秒懂,不懂算我输.zip

    整理好了JVM虚拟机的原理,适合初学者理论,也适合找工作面试的。内附运行图,思维导图,文字详解,并有相关算法的详解的方式供大家理解,请大家多多支持!

    eta, 在JVM上,Eta编程语言,Haskell的方言.zip

    eta, 在JVM上,Eta编程语言,Haskell的方言 - 在JVM上的现代 Haskell Eta编程语言是在JVM上运行的Haskell方言,具有以下目标:命令式语言的初学者,特别是Java的辅助功能GHC 7.10.3 Haskell的兼容性。访问 eta

    JVM及其调优

    初学者想要对jvm垃圾回收有比较全的了解和认识,这个PPT正是你所需要的,希望对你有用,也感谢原资源分享者!

    jvm内存模型个人笔记

    java初学者了解jvm相关知识增强

    JVM优化day01.pdf

    适合初学JVM优化,有一些基础的指令,还有视图工具方便查看jvm堆内存的使用 还有简单死锁的案例

    JVM思维导图.xmind

    全网最全的JVM思维导图,总体分基础、进阶、底层,包含工具,内有实战案例,适合初学者到P7技术专家。

    Java集合、JVM面试题

    Java集合、JVM面试题,包括Java集合、JVM内存模型、垃圾回收机制、JVM调优、异常处理等相关面试题 ...适用于Java编程的初学者,加强自身对于Java集合、JVM、异常处理等方面的知识储备,更好的应对面试机会

    cucumber-jvm-tutorial:Cucumber-jvm-教程

    Cucumber-jvm-教程这是一个初学者使用cucumber-jvm学习行为驱动开发(BDD)的教程。 本教程包括以下步骤我们首先浏览一个骨架 Eclipse 项目。 我们使用 XMind 的思维导图技术探索需求。 然后我们将需求从 XMind 导出...

    java虚拟机深入JVM内核—原理、诊断与优化视频教程

    深入JVM内核—原理、诊断、优化视频教程 总共11集 适合初学者入门

    Java中JDK,JRE和JVM之间的关系

    初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解是Java开发工具包,JRE(Java Runtime Enviroment)是Java的运行环境,JVM( java virtual machine)也...

    本人Java编译,无需JVM的单位换算器02

    Java编译的单位换算器,无需JVM,可以直接安装 这个是rar part2,part1在我的资源里面找(。。没有办法啦~每次只能上传20MB) 该软件我觉得是解决了很会初学Java的人的问题,例如图片应该如何载入在别的机子上运行...

    尚硅谷_宋红康_深度解析Java内存原型

    此文对于java初学者,想了解清楚java内存结构的童鞋,很有参考价值

    初学者面试宝典.docx

    java开发基本知识点整理,面试常用问题整理,WEB 前端基础,HTTP 状态消息,抽象类和接口,面向对象编程的原则,封装,继承和多态,字节流与字符流的区别,垃圾回收的优点和原理,什么是线程安全,同步和异步有什么...

    Java编译的单位换算器,无需JVM,可以直接安装

    Java编译的单位换算器,无需JVM,可以直接安装 这个是rar part1,part2在我的资源里面找(。。没有办法啦~每次只能上传20MB) 该软件我觉得是解决了很会初学Java的人的问题,例如图片应该如何载入在别的机子上运行...

    java环境中的JDK、JVM、JRE详细介绍

    主要介绍了java环境中的JDK、JVM、JRE详细介绍的相关资料,对于初学者还是有必要了解下,细致说明他们是什么,需要的朋友可以参考下

    Java,Jvm 的设计理念和Android的基础和贯彻

    初学Java——Java语言继承了Smalltalk的OOP的特性,是广泛运用的编程语言中的OOP的代表 再学Java——适用于网络开发的平台无关性语言,在Java的Object对象实现了wait,notify的对象级别的多线程的管程机制,让每一个...

    rock-the-jvm-scala-beginners

    摇滚jvm-scala初学者

    Java初学者---Java的学习路径教程

    其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。 1、 ...

Global site tag (gtag.js) - Google Analytics