java 虚拟机 简单了解 入门

一、java虚拟机

   1简介:以软件的方式模拟具有完整硬件系统的功能、运行在一个完全隔离环境中的完整计算机系统。是一种物理机的软件实现,常用的虚拟机还有VMWare、Virtual Box、Virtual Marchine

   2架构图

二、JVM组成

  1类加载器子系统

  2运行时数据区(内存结构)

  3执行引擎

 

 三、名词解释

  1本地方法栈(线程私有):登记native方法,如调用C语言使用的JNI技术,在Execution Engine执行时加载本地方法库

  2程序计数器(线程私有):指向存储下一条指令的地址

  3java栈(线程私有):Java线程执行方法的内存模型,一个线程对应一个栈,每个方法在执行的同时会创建一个栈帧(用于存储局部变量表,操作数栈,动态链接,方法出口等信息),不存在垃圾回收问题,线程结束,该栈立即释放,生命周期和线程一致

  4方法区(线程共享):类的所有字段和方法字节码。所有定义类的信息都存在该区域,静态变量+类信息+常量+运行时常量池都存在该方法区中

  5堆(线程共享):存储的全部是对象实例,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令);jvm只有一个heap区,被所有线程共享,不存放基本类型和对象引用,只存放对象本身。

               堆的优劣势:堆的优势是可以动态的分配内存大小,生存期也不必事先告诉编译器,java的垃圾收集器会自动收取这些不在使用的数据,但缺点是,由于要在运行时动态分配内存,存取速度慢。

 

 四、简单描述运行调用过程

  1java类

  

 

  2主线程启动,创建main栈帧入java栈,程序计数器将会记录到下一行要执行到的代码,执行say()方法时将创建say栈帧,将变量存储到操作数栈中(调用istore/iload等指令),执行到c = a + b时候将会执行iadd,然后得到结果为3,栈帧2-say出栈,通过返回地址返回给main栈帧,继续执行完直到退出main栈帧,程序结束。具体指令请详细请参考: https://segmentfault.com/q/1010000008683475    

 

  

 五、总结

  以上只是个人学习总结,错误之处在所难免,有问题麻烦指出,谢谢。待更新........

posted @ 2018-09-27 17:38  北辰风  阅读(399)  评论(0)    收藏  举报