• JVM系列(五):Java虚拟机栈

    作者: 陆金龙       发表时间: 2023-01-08 11:42
    Java虚拟机栈。
  • JVM系列实践:Java内存模型与线程

    作者: 陆金龙       发表时间: 2022-12-24 01:56
    关键词:volatile  synchronized  monitorneter  monitorexit  
    1.并发处理 并发处理的应用使得Amdahl定律取代摩尔定律成为计算机性能发展的源动力。 Amdahl定律:S=1/((1-a)+a/n)。a是并行计算部分占比,n是并行处理节点数。 (1)增加处理器数,计算负载分布到更多处理器上,提高计算速度。 (2)程序中可并行代码比例决定增加处理器带来速度提升的上限。 2.内存模型 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量的底层细节。这里的变量包括静态字段、实例字段和构成数组对象的元素,但不包括局部变量和方法参数,因为后者是存放在各线程对应的虚...
  • JVM系列实践:运行期优化

    作者: 陆金龙       发表时间: 2022-12-24 01:20
    关键词:解释执行  即时编译  基于计数器的热点探测  
    主要内容来自:周志明著,《深入理解Java虚拟机》 1.解释器与编译器 在部分的商用虚拟机如Sun HotSpot、IBM J9中,Java程序最初是通过解释器进行解释执行。 后续发展成解释器与即时编译器并存的架构。 虚拟机将运行特别频繁的方法或代码块认定为热点代码(Hot Spot Code)。即时编译器把热点代码编译成与本地平台相关的机器码,进行各种层次的优化。 解释器与编译器并存的优势: (1)程序需要迅速启动和执行时,解释器可以首先发挥作用,让程序立即执行,省去编译时间。 (2)随着程序运行时间的增加,编译器逐渐发挥作用,把越来越...
  • JVM系列实践:前端编译优化

    作者: 陆金龙       发表时间: 2022-12-23 23:15
    关键词:早期编译  前端编译  javac  ECJ  类型擦除  
    主要内容来自:周志明著,《深入理解Java虚拟机》 1.编译器 前端编译器:Sun的Javac、Eclipse JDT的增量式编译器(ECJ)。 JIT编译器:HotSpot VM 的C1、C2编译器。 AOT编译器:GCJ(GNU Compiler for the Java)、Excelsior JET。 2.Javac编译器 Javac编译器是由Java语言编写的程序。放在JDK_SRC_HOME/langtools/src/share/classes/com/sun/tools/javac中。 除了JDK自身的API,只引入了JDK...
  • JVM系列(四):PC寄存器(程序计数器)

    作者: 陆金龙       发表时间: 2022-12-02 04:19
    PC寄存器(程序计数器):存储下一条指令的地址。 CPU在不停的切换线程,切换到某个线程时,需要知道当前线程接着从哪继续执行。 每个线程都有它自己的程序计数器。 PC寄存器是一块很小的内存空间,是运行速度最快的存储区域。 PC寄存器是程序控制流指的示器。分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令。  
  • JVM系列(三):运行时数据区概述

    作者: 陆金龙       发表时间: 2022-11-20 05:49
    JVM内存布局规定了Java程序运行过程中内存申请、分配、管理的策略,保证JVM的高效运行。 运行时数据区结构如下图: 方法区和堆是一个进程(一个运行中的虚拟机)只有一份,虚拟机栈、程序计数器和本地方法栈是每个线程一份。优化的重点是堆空间,少量的在方法区(方法区在jdk8换成元空间了,堆外内存) 运行时数据区内容的三大重点是:虚拟机栈、方法区、堆。堆和方法区是有垃圾回收的。  
  • JVM系列(二):JVM的类加载子系统

    作者: 陆金龙       发表时间: 2022-11-20 05:39
    关键词:类加载器  ClassLoader  
        类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。 1.类加载过程   从大的方面包含三个阶段:加载、连接(验证、准备、解析)、初始化。    1.1 类的加载阶段 通过一个类的全限定名来获取定义此类的二进制字节流。可以从ZIP包中读取(JAR、WAR),从网络中读取(Applet),运行时计算生成(动态代理技术),由其他文件生成(由JSP文件生成Class类),从数据库中读取等等。 将这个字节...
  • JVM系列(一):JVM与Java体系结构

    作者: 陆金龙       发表时间: 2022-11-19 20:11
    本文基于尚硅谷-宋红康的《JVM从入门到精通》培训视频整理。 主要内容: Java与JVM简介 Java及JVM的发展历程 虚拟机与Java虚拟机 JVM整体结构 Java代码执行流程 JVM的架构模型 JVM的生命周期     典型的虚拟机架构,分为基于栈的指令集架构和基于寄存器的指令集架构两种方式。JVM是基于栈的架构模型。     JVM、Java、开发框架、应用程序的关系如下:      ...