请选择 进入手机版 | 继续访问电脑版

JVM核心原理:JVM应该怎么学

[复制链接]
发表于 2018-3-23 11:18:09 |显示全部楼层
   
    如果你想成为一个资深的Java开发工程师,那么对于JVM虚拟机是一定要了解的。

    在学习JVM之前,首先要有一个大前提,那就是JVM的运行是以栈为基础的。
  
    在学习Java编程的时候我们都知道,在我们编写完成自己的程序源文件之后,首先Javac命令将java编译成字节码,然后使用Java


命令来执行编译之后的字节码文件。在这个时候 我们可以将其理解成为两部分,第一部分就是编译。第二部分就是执行。

      如果想知道JAVAC是如何将Java源文件编程成CLASS字节码的同学,可以看一下《javac的学习_编译原理》。

      编译Java源文件的命令是javac  hello.java

      在执行完javac命令之后,我们开始执行java hello命令。

     
      

      
2.JVM的组成

      JVM由4大部分组成:ClassLoader【类加载】,Runtime Data Area运行时数据区,Execution Engine【执行引擎】,Native Interface本地接口

         jvm.jpg


                       (图片来自网络)
Runtime Data Area:
  
      Stack(): Java栈的区域很小,只有1M,特点是存取速度很快,所以在stack中存放的都是快速执行的任务,基本数据类型的数

据,和对象的引用(reference)

      Heap(堆): 对象数据存放.类的对象放在heap(堆)中,所有的类对象都是通过new方法创建,创建后,在stack(栈)会创建类对

象的引用(内存地址)
   
      Method Area(方法区):类数据存放,通常 类数据包括字段和方法名等等
  
      PC Register(PC寄存器(Program Counter Register))

      本地方法栈则为虚拟机使用到的Native方法服务


Execution Engine 执行引擎


       Java.exe的作用就是将Class文件加载到JVM中

       最后,今天的分享就进行到这里.如果你有什么想要说的,欢迎留言。
         

类加载过程


            
系统收到了我们发出的指令,启动了一个Java虚拟机进程,这个进程首先从classpath中找到AppMain.class文件,读取这个文件中的二进制数据,然后把Appmain类的类信息存放到运行时数据区的方法区中。这一过程称为AppMain类的加载过程   
      

30121435_meYB.jpg




参考资料: java中JVM的原理重温
              https://my.oschina.net/wangsifangyuan/blog/711329


  



您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|沙漏笔记

GMT+8, 2019-10-24 09:41 , Processed in 0.160646 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Copyright © 2015-2018 xuejava网 / 鲁ICP备17054568号-1
回顶部