openjdk

程序猿看视界3 个月前
git·docker·node.js·pnpm·idea·openjdk·halo
Halo 开发者指南——项目运行、构建指 Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 halo-next 的文件夹,绝对路径为 ~/halo-next。里面通常包含下列目录或文件:
coffee_babe4 个月前
java·jvm·gc·openjdk·hotspot
【JVM】垃圾收集器与GC日志(一)串行:一个GC线程运行 并行(Parallel):指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。 并发(Concurrent):指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),用户程序在继续运行,而垃圾收集程序运行于另一个CPU上
coffee_babe4 个月前
java·jvm·openjdk·hotspot
【JVM】执行引擎、JIT、逃逸分析(二)针对的是热点代码(触发JIT的条件) Client模式:32bit才有 Server模式:64bit 触发条件后,谁来编译,编译线程 C1:Client模式下 C2: Server模式下 JDK6之后,混合在一起, 热点代码((统计的并不是被调用的绝对次数,而是一个相对的执行频率,一段时间内方法被调用的次数))其中包括
coffee_babe4 个月前
java·jvm·算法·gc·openjdk·hotspot
【JVM】垃圾回收算法(一)Java程序在运行过程中会产生大量的对象,但是内存大小是有限的,如果光用而不释放,那内存迟早被耗尽。如C/C++程序,需要程序员手动释放内存,Java则不需要,是由垃圾回收期去自动回收。垃圾回收器回收内存至少需要做两件事情:标记垃圾、回收垃圾。于是诞生了很多算法
coffee_babe4 个月前
java·jvm·openjdk·hotspot
【JVM】OOM与调优(一)模拟OOM在配置Java环境的情况下,直接打开命令行输入jvisualvm命令即可打开然后在左边找到我们的程序,右边是查看图形 查看GC情况需要安装一个插件Visual GC,左上方工具栏安装即可
coffee_babe4 个月前
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_babe4 个月前
java·jvm·openjdk·string·hotspot
【JVM】剖析字符串与数组的底层实现(一)JVM有三种模型:即String Pool,但是JVM中对应的类是StringTable,底层实现是一个hashtable,如代码所示
coffee_babe4 个月前
java·jvm·openjdk·hotspot
【JVM】JVM内存模型与操作系统内存模型(二)与虚拟机栈发挥的作用是相似的,他们之间的区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务。在虚拟机规范中对本地方法栈中使用、使用方式与数据结构并没有强制规定,因此具体的虚拟机可以自由实现它。甚至有的虚拟机 比如(SUn HotSpot虚拟机)直接就把本地方法栈和虚拟机栈合二为一。与虚拟机栈一样,本地方法栈区域也会抛出StackOverflowError和OutOfMemoryErr异常 调用JNI程序(安卓需要操作硬件),Java没有办法直
coffee_babe4 个月前
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类型
爱宇阳4 个月前
java·jdk·openjdk
OpenJDK 和 OracleJDK 的区别、下载方式OpenJDK 和 OracleJDK 都是 Java 开发套件 (JDK),用于开发和运行 Java 应用程序。它们之间的主要区别如下:
我想rua熊猫8 个月前
java·jvm·openjdk
macOS sonoma 14.4.1编译JDK 12记录一次靠自己看代码解决问题的经历(总之就是非常开心)。首先,先diss一下bing,我差一点就放弃了。
一只小熊猫呀1 年前
maven·openjdk·jmh
org.openjdk.jmh 的 pom 引用这将从 Maven 中央存储库下载 org.openjdk.jmh 依赖项的最新版本 1.29。另外,如果还需要使用其他org.openjdk.jmh模块,例如 jmh-generator-annprocess,也可以在pom.xml 中添加相应的依赖项。例如:
鸠摩(马智)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)的时候正常工作,而无需为每一种类型分别写一份代码。
猫一样的女子2451 年前
openjdk
openjdk和oracle jdk的区别OpenJDK 和 Oracle JDK 都是 Java Development Kit (JDK) 的不同实现,用于开发和运行 Java 应用程序。它们有一些区别,但也有很多相似之处。以下是它们之间的主要区别:
鸠摩(马智)1 年前
java·jvm·虚拟机·openjdk·hotspot
C++指针和地址偏移在HotSpot VM中的应用在前面我们介绍过new运算符,这个操作实际上上包含了如下3个步骤:在第一步中,其实我们可以自己写个operator new函数对标准库函数进行重载,通常会根据类信息分配出需要的内存大小,但是分配内存的逻辑现在由我们自己控制,那我们就可以多分配一些内存,然后在多分配出来的内存上存储一些额外定义的信息。例如:
鸠摩(马智)1 年前
jvm·虚拟机·openjdk·hotspot
C++ 重载运算符在HotSpot VM中的应用C++支持运算符重载,对于Java开发者来说,这个可能比较陌生一些,因为Java不支持运算符重载。运算符重载本质上来说就是函数重载。下面介绍一下HotSpot VM中的运算符重载。
鸠摩(马智)1 年前
java·jvm·虚拟机·openjdk·hotspot
C++ RAII在HotSpot VM中的重要应用RAII(Resource Acquisition Is Initialization),也称为“资源获取就是初始化”,是C++语言的一种管理资源、避免泄漏的惯用法。C++标准保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。简单的说,RAII的做法是使用一个对象,在其构造时获取资源,在对象生命期控制范围之下对资源的访问始终保持有效,最后在对象析构的时候释放资源。 在HotSpot VM中,RAII对内存资源的管理和释放、明确定义范围锁及记录重要信息等方面起到了非常重要的作用。下面详细介
01空间1 年前
docker·openjdk
基于 eclipse-temurin 构建国内时区,地区,语言的docker镜像在给应用构建自定义镜像时,往往需要在每次构建时去调整时区,地区这些东西;每次构建镜像都搞这些不爽,因此我们可以自己构建一个基础镜像,把系统环境都搞好,后面基于这个基础镜像构建应用镜像即可。