
JVM
xiangminlu
这个作者很懒,什么都没留下…
展开
-
java内存模型与线程
java内存模型Java内存模型(Java Memory Model,JMM)屏蔽掉各种硬件和操作系统的内存访问差异,实现让Java程序在各种平台下都能达到一致的内存访 问效果。在此之前,主流程序语言(如C/C++等)直接使用物理硬件和操作系统的内存模 型,因此,会由于不同平台上内存模型的差异,有可能导致程序在一套平台上并发完全正 常,而在另外一套平台上并发访问却经常出错,因此在某些场景就必须针对不同的平台来编 写程序。java内存模型 与硬件操作系统的缓存模型可以类比硬件系统的缓存模型java原创 2020-05-15 10:12:03 · 200 阅读 · 0 评论 -
java编译----运行期编译(即时编译器)
JAVA编译期:java编译器,是不确定的过程,可能指:1.前端编译器(即,把 .java文件转变成 .class的过程); 例如:Javac2.后端运行期编译器 JIT(把 字节码 转变成 机器码的过程); 例如:HotSpot VM 的 C1 C2 编译器3. 静态提前编译器AOT(直接把 .java 文件编译为 本地机器代码 的过程);例如:GNU Compiler ...原创 2020-05-08 12:39:58 · 601 阅读 · 0 评论 -
JVM 类加载机制
一 类加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,生命周期如下:1. 加载2. 验证3.准备4. 解析5.初始化有且只有5种情况必须立即对类进行“初始化”遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初 始化,则需要先触发其初始化。使用java.lang.reflect包的方法对类进...原创 2020-05-04 22:00:14 · 190 阅读 · 0 评论 -
Class文件解析(未完)
1. java虚拟机的平台无关性和语言无关性我们知道,c,c++等语言的编译器直接将源代码文件编译成了二进制的本地机器码,然后由计算机来执行。是一种平台相关的语言。而,java是平台无关的,号称“一次编译,到处运行”,主要是java虚拟机的功劳,虚拟机使用统一的程序存储格式—字节码,是构成平台无关性的基石而且,java虚拟机还具有语言无关性的特点,作为一个通用的、机器无关的执行平台,...原创 2020-04-21 14:17:46 · 283 阅读 · 0 评论 -
虚拟机字节码执行引擎(虚拟机是如何执行字节码指令的)
最近一直在学习《java虚拟机》这本书,根据自己的理解,进行如下总结,希望能和大家交流学习。本节是对第八章8.4节的学习总结,关于:虚拟机字节码执行基于栈的字节码解释执行引擎一. java代码的执行首先,我们要清楚,许多Java虚拟机的执行引擎在执行Java代码的时候,都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择, 本文首先探讨在解释执行时,虚...原创 2019-12-15 12:58:40 · 452 阅读 · 1 评论 -
JAVA编译期-- (前端编译)javac编译器
1.JAVA编译期是一段“不确定”的操作过程,可能指:前端编译器(即,把 .java文件转变成 .class的过程); 例如:Javac后端运行期编译器 JIT(把 字节码 转变成 机器码的过程); 例如:HotSpot VM 的 C1 C2 编译器静态提前编译器AOT(直接把 .java 文件编译为 本地机器代码 的过程);例如:GNU Compiler for the Java ...原创 2019-11-23 11:55:43 · 222 阅读 · 0 评论