熟悉JVM字节码指令

简介 Java虚拟机的指令由一个字节长度(256个操作码)的、代表着特定操作含义的数字(操作码,Opcode)和跟随其后的零至多个代表其操作需要的参数(操作数,Operand)构成。 由于Java虚拟机采……

阅读全文

MacOs10.15.7编译openjdk8u

Mac10.15.7上编译OpenJDK8u 机器环境及依赖 操作系统:macOs 10.15.7 BootJDK: /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home XCode:Version 11.3.1 (11C505) hg命令(mercurial): brew install mercurial freetype: brew install freetype 注意:笔者先前打算编译jdk8,一番折腾……

阅读全文

内存分配与回收策略

前提环境 笔者JDK版本如下,如果不做指定的话,64为虚拟机1.8版本默认使用的ParallelGC垃圾收集器。 $ java -XX:+PrintCommandLineFlags -version -XX:InitialHeapSize=134217728 -XX:MaxHeapSize=2147483648 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC java version "1.8.0_221" Java(TM) SE Runtime Environment (build 1.8.0_221-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode) 使用-XX:+UseSerialG……

阅读全文

垃圾收集算法

分代收集理论 3个假说 弱分代假说:绝大多数对象都是朝生夕灭的。(设计了年轻代) 强分代假说:熬过越多次垃圾收集过程的对象就越难以消亡。(设计了老年代) 跨代引用假说:跨代引用相对于同代引用仅占极少数。(实际……

阅读全文

虚拟机相关工具

本文主要是为了介绍虚拟机相关的工具,包括故障处理、性能监控和一些其他工具。 故障处理工具 名称 全称 作用及描述 jps JVM Process Status Tool 显示指定系统内所有的HotSpot虚拟机进程 jstat JVM Statistics Monitoring Tool 用于收集HotSpot虚拟机各方……

阅读全文

IDEA的启动速度优化

前言 如果发现自己的IDE很慢,或者卡顿,那么就对它来一次调优吧。本人使用的是IDEA,如果是Eclipse的同学,可查找对应相关资料,本文仅供参考。 安装启动信息插件 笔者查找资料后,开发了IDEA启动信……

阅读全文

回收堆和方法区中对象

哪些区域需要垃圾收集 在熟悉Java内存区域文中,知道了JVM运行时数据区有堆、方法区、虚拟机栈、本地方法栈和程序计数器5个部分,后3个部分都是线程私有的,其中的数据会跟随线程死亡自动回收,所以不需要垃……

阅读全文

Java发展历史

Java发展历史 1995年5月23 Oak语言更名为Java 1996年1月23 JDK 1.0发布 1997年2月19日JDK 1.1发布 技术代表:JDBC,JAR文件格式,JavaBeans,RMI。 1998年1……

阅读全文

垃圾判定算法与4大引用

哪些区域需要垃圾收集 在熟悉Java内存区域文中,指出了JVM运行时数据区有堆、方法区、虚拟机栈、本地方法栈和程序计数器5个部分,后3个部分都是线程私有的,其中的数据会跟随线程死亡自动回收,所以不需要垃……

阅读全文

如何计算Java对象的大小

关键点 Java对象的布局结构 借助jol-core包来打印对象 引用的指针压缩 对象布局 Java对象布局(Java Object Layout) String对象例子 int[]数组对象例子 引用的指针压缩 JVM内存寻址最大内……

阅读全文