- 系列博客专栏: JVM系列博客专栏SpringBoot系列博客 1、什么是Java反射机制? 在程序运行中动态地获取类的相关属性,同时调用对象的方法和获取属性,这种机制被称之为Java反射机制 下面给出一个反射的简单例子: import lombok.Data; @Data public class User { public String usernam... 系列博客专栏: JVM系列博客专栏SpringBoot系列博客 1、什么是Java反射机制? 在程序运行中动态地获取类的相关属性,同时调用对象的方法和获取属性,这种机制被称之为Java反射机制 下面给出一个反射的简单例子: import lombok.Data; @Data public class User { public String usernam...
- 1 JVM基本结构 1)类加载器classLoader:在JVM启动时或者类运行时将需要的.class文件加载到内存中 2)内存区域(运行时数据区): 是在JVM运行的时候操作所分配的内存区 3)执行引擎:负责执行class文件中包含的字节码指令 4)本地方法接口:主要是调用C/C++实现的本地方法及返回结果 ... 1 JVM基本结构 1)类加载器classLoader:在JVM启动时或者类运行时将需要的.class文件加载到内存中 2)内存区域(运行时数据区): 是在JVM运行的时候操作所分配的内存区 3)执行引擎:负责执行class文件中包含的字节码指令 4)本地方法接口:主要是调用C/C++实现的本地方法及返回结果 ...
- 你或许也知道,正是JVM( Java Virtusal Machine,Java虚拟机)使得Java成为遵循“一次编写,处处运行”的范例。JVM包括如下核心组件: 堆栈持久代及方法区JIT编译器代码缓存 堆是你的应用程序代码中new操作符分配内存的地方。栈存储的是你在某个方法作用域内要进行赋值的那些本地变量。有一点需要注意的是,方法作用域内所定义的变量在方法结束后将会被删... 你或许也知道,正是JVM( Java Virtusal Machine,Java虚拟机)使得Java成为遵循“一次编写,处处运行”的范例。JVM包括如下核心组件: 堆栈持久代及方法区JIT编译器代码缓存 堆是你的应用程序代码中new操作符分配内存的地方。栈存储的是你在某个方法作用域内要进行赋值的那些本地变量。有一点需要注意的是,方法作用域内所定义的变量在方法结束后将会被删...
- 1.条件判断指令 指令助记符含义0x99ifeq判断是否 == 00x9aifne判断是否 != 00x9biflt判断是否 < 00x9cifge判断是否 >= 00x9difgt判断是否 > 00x9eifle判断是否 <= 00x9fif_icmpeq两个int是否 ==0xa0if_icmpne两个int是否 !=0xa1if_icmp... 1.条件判断指令 指令助记符含义0x99ifeq判断是否 == 00x9aifne判断是否 != 00x9biflt判断是否 < 00x9cifge判断是否 >= 00x9difgt判断是否 > 00x9eifle判断是否 <= 00x9fif_icmpeq两个int是否 ==0xa0if_icmpne两个int是否 !=0xa1if_icmp...
- GC 调优 预备知识: GC相关的VM参数:官方文档 查看虚拟机参数命令: "C:\Program Files\Java\jdk1.8.0_201\bin\java" -XX:+PrintFlagsFinal -version | findstr "GC" 1 D:\Note\笔记\JDK源码学习\IDEA-workspace\jdk8>"C:\... GC 调优 预备知识: GC相关的VM参数:官方文档 查看虚拟机参数命令: "C:\Program Files\Java\jdk1.8.0_201\bin\java" -XX:+PrintFlagsFinal -version | findstr "GC" 1 D:\Note\笔记\JDK源码学习\IDEA-workspace\jdk8>"C:\...
- JVM系列之内存模型(Java Memory Model) 1. 内存模型和运行时数据区 在上一章的学习中,我们照着岗位学习了java虚拟机运行时数据区,这一章学习java虚拟机内存模型(Java Virtual machine menory model),可以这样理解,jvm运行时数据库是一种规范,而JVM内存模型是对改规范的实现 java虚拟机重点存储数据的... JVM系列之内存模型(Java Memory Model) 1. 内存模型和运行时数据区 在上一章的学习中,我们照着岗位学习了java虚拟机运行时数据区,这一章学习java虚拟机内存模型(Java Virtual machine menory model),可以这样理解,jvm运行时数据库是一种规范,而JVM内存模型是对改规范的实现 java虚拟机重点存储数据的...
- 1 程序主入口 src/java.base/share/native/launcher/main.c main函数返回了JLI_Launch()函数,位于 src/java.base/share/native/libjli/java.c 2 java.c # JLI_Launch() JavaMain()是Java主程序的native调用。 在该方法里会执行... 1 程序主入口 src/java.base/share/native/launcher/main.c main函数返回了JLI_Launch()函数,位于 src/java.base/share/native/libjli/java.c 2 java.c # JLI_Launch() JavaMain()是Java主程序的native调用。 在该方法里会执行...
- JVM是由一个对应角色的oop对象来描述Java对象 instanceOopDesc用来描述普通实例对象 arrayOopDesc用来描述数组对象 这些类型的oop对象均是继承自oopDesc。 oopDesc主要包含 _mark _mark是一个markOop实例,它描述了一个对象的头信息,用于存储对象的运行时记录信息,如哈希值、GC分代年龄、锁状态标志、线程持... JVM是由一个对应角色的oop对象来描述Java对象 instanceOopDesc用来描述普通实例对象 arrayOopDesc用来描述数组对象 这些类型的oop对象均是继承自oopDesc。 oopDesc主要包含 _mark _mark是一个markOop实例,它描述了一个对象的头信息,用于存储对象的运行时记录信息,如哈希值、GC分代年龄、锁状态标志、线程持...
- 简介 miniJVM 作为一个 mini 的 Java VM,实现了 Switch 解释器,并不支持主流 JVM 的 JIT 或者更为复杂的 AOT。但这样对于我们了解字节码的执行已经足够了。 字节码指令 基于堆栈 字节码指令类似于汇编指令,但是不同的是: 一行汇编代码的格式一般都是 – opcode 操作数1 操作数2然而字节码指令格式是 opcode + 栈 字... 简介 miniJVM 作为一个 mini 的 Java VM,实现了 Switch 解释器,并不支持主流 JVM 的 JIT 或者更为复杂的 AOT。但这样对于我们了解字节码的执行已经足够了。 字节码指令 基于堆栈 字节码指令类似于汇编指令,但是不同的是: 一行汇编代码的格式一般都是 – opcode 操作数1 操作数2然而字节码指令格式是 opcode + 栈 字...
- 大部分的Java对象只存活一小段时间,而存活下来的小部分Java对象则会存活很长一段时间 pmd中Java对象生命周期的直方图,红色的表示被逃逸分析优化掉的对象 之所以要提到这个假设,是因为它造就了Java虚拟机的分代回收思想 就是将堆空间划分为两代,分别叫做新生代和老年代新生代用来存储新建的对象当对象存活时间够长时,则将其移动到老年代 Java虚拟机可以给不同... 大部分的Java对象只存活一小段时间,而存活下来的小部分Java对象则会存活很长一段时间 pmd中Java对象生命周期的直方图,红色的表示被逃逸分析优化掉的对象 之所以要提到这个假设,是因为它造就了Java虚拟机的分代回收思想 就是将堆空间划分为两代,分别叫做新生代和老年代新生代用来存储新建的对象当对象存活时间够长时,则将其移动到老年代 Java虚拟机可以给不同...
- 如果JMM中所有的有序性都只靠volatile和synchronized,那么有一些操作将会变得很繁琐,但我们在编写Java并发代码时并没有感到这一点,这是因为Java语言中有一个先行发生(Happen-Before)原则 这个原则非常重要,它是判断数据是否存在竞争,线程是否安全的主要依赖。 先行发生原则 指的是JMM中定义的两项操作之间的依序关系 happen... 如果JMM中所有的有序性都只靠volatile和synchronized,那么有一些操作将会变得很繁琐,但我们在编写Java并发代码时并没有感到这一点,这是因为Java语言中有一个先行发生(Happen-Before)原则 这个原则非常重要,它是判断数据是否存在竞争,线程是否安全的主要依赖。 先行发生原则 指的是JMM中定义的两项操作之间的依序关系 happen...
- volatile 的实现维度 级别实现Java 代码volatile int iByteCode 字节码ACC_VOLATILEJVM 虚拟机规范JVM 内存屏障HotSpot 实现汇编语言调用CPU 级别MESI 原语支持总线锁 可见性问题 让一个线程对共享变量的修改,能够及时的被其他线程看到。 根据JMM中规定的happen before和同步原则: 对某个vo... volatile 的实现维度 级别实现Java 代码volatile int iByteCode 字节码ACC_VOLATILEJVM 虚拟机规范JVM 内存屏障HotSpot 实现汇编语言调用CPU 级别MESI 原语支持总线锁 可见性问题 让一个线程对共享变量的修改,能够及时的被其他线程看到。 根据JMM中规定的happen before和同步原则: 对某个vo...
- 1 OOP-Klass(Ordinary Object Pointer)模型 OOP-Klass模型用来描述class的属性和行为 设计为OOP和Klass两部分是因为不希望每个对象都有一个C ++ vtbl指针, 因此,普通的oops没有任何虚拟功能。 相反,他们将所有“虚拟”函数转发到它们的klass,它具有vtbl并根据对象的实际类型执行C ++调度。 1.1... 1 OOP-Klass(Ordinary Object Pointer)模型 OOP-Klass模型用来描述class的属性和行为 设计为OOP和Klass两部分是因为不希望每个对象都有一个C ++ vtbl指针, 因此,普通的oops没有任何虚拟功能。 相反,他们将所有“虚拟”函数转发到它们的klass,它具有vtbl并根据对象的实际类型执行C ++调度。 1.1...
- 1 逃逸分析 JVM中较前沿的优化技术,它与类型继承关系分析一样,并非直接优化代码,而是为其他优化措施提供依据的分析技术。 1.1 基本原理 分析对象动态作用域,当一个对象在方法里面被定义后,它可能 被外部方法所引用 例如作为调用参数传递给其他方法,称为方法逃逸被外部线程访问 譬如赋值给可以在其他线程中访问的实例变量,称为线程逃逸 从不逃逸 =》方法逃逸 =》... 1 逃逸分析 JVM中较前沿的优化技术,它与类型继承关系分析一样,并非直接优化代码,而是为其他优化措施提供依据的分析技术。 1.1 基本原理 分析对象动态作用域,当一个对象在方法里面被定义后,它可能 被外部方法所引用 例如作为调用参数传递给其他方法,称为方法逃逸被外部线程访问 譬如赋值给可以在其他线程中访问的实例变量,称为线程逃逸 从不逃逸 =》方法逃逸 =》...
- 1 概述 JVM : Java Virtual Machine ,也就是Java虚拟机。 虚拟机是指:通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。 JVM是通过软件来模拟Java字节码的指令集,是Java程序的运行环境。 2 JVM核心架构设计 核心功能 通过ClassLoader 寻找和装载class文件解释字节码成为指令并执行... 1 概述 JVM : Java Virtual Machine ,也就是Java虚拟机。 虚拟机是指:通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。 JVM是通过软件来模拟Java字节码的指令集,是Java程序的运行环境。 2 JVM核心架构设计 核心功能 通过ClassLoader 寻找和装载class文件解释字节码成为指令并执行...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签