大家好,又见面了,我是你们的朋友全栈君。
JVM
JDK
版本:1.8
JVM
内存区域JVM
在执行应用程序的过程中会将它管理的内存分为若干个不同的区域。其中一部分是线程私有的,一部分是线程共享的。Java
内存区域也叫做运行时数据区。JVM
内存内存结果如下图所示:
Java
代码执行流程Java
源码文件通过Java
编译器生成字节码文件。JIT
执行其:主要作用是应用程序的性能。将反复执行的热点代码由字节码文件直接编译成机器指令,缓存在方法区中,直接调用即可。大体步骤就是高级编程语言通过编译器编译成汇编语言,然后再将汇编语言翻译成机器指令,最后在操作系统上运行机器指令。
操作系统只认识机器指令,即 0 1 0 1。
JVM
的架构模型Java
编译器输入的指令流一种是基于栈的指令架构,另外一种指令集架构则是寄存器的指令集架构。
两种架构之间的区别:
1、基于栈的指令集架构:
2、基于寄存器架构:
Java
的HotSpot
使用的是栈的指令架构。
JVM
的生命周期Java
虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。
一个运行中的Java
虚拟机有着一个清晰的任务:执行Java
程序。程序开始执行时它才执行,程序结束时它就结束。执行一个所谓的Java
程序,真真正正在执行的是一个叫做Java
虚拟机的进程。
虚拟机退出有如下几种情况:
1、程序正常执行完毕结束。
2、程序在执行过程中遇到了异常或错误而终止。
3、由于操作系统错误而导致Java
虚拟机进程终止。
4、某一个线程调用System
或Runtime
类的exit
方法,或Runtime
类的halt
方法,并且Java
安全管理器也允许这次exit
或halt
操作。
5、除以上之外,JNI(Java Native Interface)
规范描述了用JNI Invocation API
来加载或卸载Java
虚拟机时,Java
虚拟机进程退出的情况。
JVM
内存架构方法区:存放常量信息,类信息,方法信息。
LV(Local Variables)
:局部变量表。OS(Operand Stack)
:操作数栈。DL(Dynamic Linking)
:动态连接。RA(Return Address)
:方法返回值地址。Interpreter
:解释器。Intermediate Code Generator
:中间代码生成器。Code Optimizer
:代码优化器。Target Code Generator
:目标代码生成器。Profiler
:分析器。GitHub源码地址:https://github.com/kapbc/Java-Kapcb/tree/master/src/main/java/com/kapcb/ccc/jvm
备注:此文为笔者学习
JVM
的笔记,鉴于本人技术有限,文中难免出现一些错误,感谢大家批评指正。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141986.html原文链接:https://javaforall.cn