hotspot

G丶AEOM2 个月前
jvm·hotspot
Hotspot是什么?简单来说,JVM的一种。一、HotSpot 的官方定义HotSpot 是 Oracle 公司开发的一个高性能的 Java 虚拟机(JVM)。它通过一系列先进的技术和优化手段,为 Java 应用程序提供高效的运行环境,实现了跨平台的代码执行和良好的性能表现。
coffee_babe3 个月前
java·jvm·gc·openjdk·hotspot
【JVM】垃圾收集器与GC日志(一)串行:一个GC线程运行 并行(Parallel):指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。 并发(Concurrent):指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),用户程序在继续运行,而垃圾收集程序运行于另一个CPU上
coffee_babe3 个月前
java·jvm·openjdk·hotspot
【JVM】执行引擎、JIT、逃逸分析(二)针对的是热点代码(触发JIT的条件) Client模式:32bit才有 Server模式:64bit 触发条件后,谁来编译,编译线程 C1:Client模式下 C2: Server模式下 JDK6之后,混合在一起, 热点代码((统计的并不是被调用的绝对次数,而是一个相对的执行频率,一段时间内方法被调用的次数))其中包括
coffee_babe3 个月前
java·jvm·算法·gc·openjdk·hotspot
【JVM】垃圾回收算法(一)Java程序在运行过程中会产生大量的对象,但是内存大小是有限的,如果光用而不释放,那内存迟早被耗尽。如C/C++程序,需要程序员手动释放内存,Java则不需要,是由垃圾回收期去自动回收。垃圾回收器回收内存至少需要做两件事情:标记垃圾、回收垃圾。于是诞生了很多算法
coffee_babe3 个月前
java·jvm·openjdk·hotspot
【JVM】OOM与调优(一)模拟OOM在配置Java环境的情况下,直接打开命令行输入jvisualvm命令即可打开然后在左边找到我们的程序,右边是查看图形 查看GC情况需要安装一个插件Visual GC,左上方工具栏安装即可
coffee_babe3 个月前
java·jvm·hotspot
【JVM】类加载器、双亲委派、SPI(二)元空间内部给各个类加载器划分了内存区域。另外还需要注意一点的是,方法区会有碎片化问题,方法区的垃圾回收通常被称为类的卸载。方法区回收之后是没有整理的
coffee_babe3 个月前
java·jvm·编译·openjdk·hotspot
【JVM】JVM解析字节码文件过程(二)在Java字节码中,field_info结构是用来描述类或接口中的字段(成员变量的)。每个field_info结构对应类文件中的一个字段。其中它的组成部分包括如下: 1.access_flags:访问标志,表示字段的访问级别(如public, private, protected, static等)和其他属性(如final volatile等) 2.name_index:字段名的索引,它是一个指向常量池的索引,常量池中的对应条目包含字段的名称 3.descriptor_index:字段描述符的索引,它也是
coffee_babe3 个月前
java·jvm·openjdk·string·hotspot
【JVM】剖析字符串与数组的底层实现(一)JVM有三种模型:即String Pool,但是JVM中对应的类是StringTable,底层实现是一个hashtable,如代码所示
coffee_babe3 个月前
java·jvm·openjdk·hotspot
【JVM】JVM内存模型与操作系统内存模型(二)与虚拟机栈发挥的作用是相似的,他们之间的区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务。在虚拟机规范中对本地方法栈中使用、使用方式与数据结构并没有强制规定,因此具体的虚拟机可以自由实现它。甚至有的虚拟机 比如(SUn HotSpot虚拟机)直接就把本地方法栈和虚拟机栈合二为一。与虚拟机栈一样,本地方法栈区域也会抛出StackOverflowError和OutOfMemoryErr异常 调用JNI程序(安卓需要操作硬件),Java没有办法直
coffee_babe3 个月前
java·jvm·编译·openjdk·hotspot
【JVM】JVM解析字节码文件过程(一)大端模式:高位存在低地址,低位存高地址 小段模式:与大端模式相反String变量在常量池中表示的结构是Constant_String_info结构,其中它的index指向了字符串字面量的索引,而字符串字面量的表示结构为Constant_Utf8_info,其中length字段表示UTF-8编码的字符串的长度,由两个字节组成表示的最大长度为2^16 -1 = 65535,但是Java虚拟机还需要1个字节的指令作为结束,所以其实真正的有效范围是65534,记住这是编译器的限制,运行期还是受制于int类型
夜雨风云6 个月前
jvm·hotspot·调参·jvm调参
JVM调参实践总结JVM调优–理论篇从理论层面介绍了如何对JVM调优。这里再写一篇WIKI,尝试记录下JVM参数使用的最佳实践,注意,这里重点介绍HotSpot VM的调参,其他JVM的调参可以类比,但不可照搬。
夜雨风云7 个月前
jvm·jvm调优·hotspot·jvm性能分析·jvm性能监控
JVM调优--理论篇在对Java应用进行性能优化时,JVM的调优是一个绕不开的话题。本文重点介绍下如何对JVM进行调优,以期提高Java应用的性能、稳定性、响应时间等性能目标。JVM的调优过程符合Java应用的调优过程,主要分为三步:性能监控、性能分析、性能调优。此外,本文讨论的JVM均是指HotSpot VM,对于其他JVM,可以参考相关原理,并不能拿来就用。
zoeil1 年前
java·开发语言·jvm·后端·hotspot
JVM-HotSpot虚拟机对象探秘目录一、对象的实例化(一)创建对象的方式(二)创建对象的步骤二、对象的内存布局(一)对象头(二)实例数据
一个有梦有戏的人1 年前
java·jvm·后端·hotspot
【JVM系列】- 寻觅·方法区的内容😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🌝分享学习心得,欢迎指正,大家一起学习成长!
鸠摩(马智)1 年前
jvm·虚拟机·volatile·hotspot·内存屏障
详述Java内存屏障,透彻理解volatile一般来说内存屏障分为两层:编译器屏障和CPU屏障,前者只在编译期生效,目的是防止编译器生成乱序的内存访问指令;后者通过插入或修改特定的CPU指令,在运行时防止内存访问指令乱序执行。
鸠摩(马智)1 年前
jvm·虚拟机·openjdk·hotspot
关于CAS等原子操作,说点别人没说的Java中提供了原子操作,可以简单看一下AtomicInteger类中的一个典型的原子操作incrementAndGet(),表示对原子整数变量进行加操作,并返回新的值。实现如下:
鸠摩(马智)1 年前
jvm·虚拟机·openjdk·hotspot
C++在HotSpot VM中一种巧妙的内存管理方式在HotSpot VM中定义了一个Relocation类及相关的子类,可以通过这些类操作不同的重定位数据,如在CodeCache中读写这些数据。这些类需要的内存很小,但是不同的类需要的内存大小又不一样,所以做了如下的设计:
鸠摩(马智)1 年前
jvm·虚拟机·openjdk·hotspot
C++的模板类在HotSpot VM中的应用模板是c++的一种特性,允许函数或者类通过泛型(generic types)的形式表现或者运行。模板可以使得函数或类在对应不同的类型(types)的时候正常工作,而无需为每一种类型分别写一份代码。
鸠摩(马智)1 年前
jvm·虚拟机·hotspot·源代码
C++的动态分派在HotSpot VM中的重要应用众所周知,多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。C++ 和 Java 作为当前最为流行的两种面向对象编程语言,其内部对于多态的支持对于单继承的实现非常类似。