主要内容JVM笔记01.Java Class File FormatJVM笔记02.Class LoadingJVM笔记02补充.双亲委派相关代码JVM笔记03.Runtime Data AreaJVM笔记03补充.Class实例在堆中还是方法区中?JVM笔记04.HotSpot Java Object LayoutJVM笔记05.Garbage CollectionJVM笔记06.JVM Tuning零散随笔JVM小tips.编译期常量与运行时常量JVM小tips.实现一个自己的O
本文主要基于周志明老师的《深入理解Java虚拟机》。文章目录JVM TuningJVM命令行参数HotSpot参数分类标准参数非标准参数不稳定参数实用命令查看支持的标准参数查看支持的非标准参数查看JVM默认参数值查看程序使用的默认JVM参数查看JVM最终参数值实用日志参数设置JVM自带工具
本文主要基于周志明老师的《深入理解Java虚拟机》。文章目录Garbage Collection哪些内存需要被回收?引用计数算法 Reference Count可达性分析算法 Root Searching垃圾回收算法标记清除 Mark-Sweep拷贝 Copying标记压缩 Mark-Compact标记-清除-压缩 Mark-Sweep-Compat基于分代的垃圾回收JVM内存分代模型HotSpot中默认配置MinorGc、MajorGC、YGC、FGC垃圾收集器SerialSerial OldPar.
JVM小tips.实现一个自己的OOM代码如下:public class StackOverflowError { public static void main(String[] args) { a(); } public static void a() { a(); }}执行后Exception in thread "main" java.lang.StackOverflowError at core.jvm.oom.S
Class对象是存放在堆中,并不是在方法区。OOP-KLASS内存模型在JVM中,使用了OOP-KLASS模型来表示java对象。JVM加载一个类的时候会创建一个instanceKlass,用来表示这个类的元数据,包括常量池、字段、方法等。在new一个对象时,jvm创建instanceOopDesc,来表示这个对象,存放在堆区,其引用,存放在栈区;平时说的Java Object Layout就是instanceOopDesc,它用来表示对象的实例信息;instanceOopDesc对应java中.
本文主要基于Java SE 8 版本的Java虚拟机规范。Java虚拟机规范https://docs.oracle.com/javase/specs/index.htmlJava SE 8 虚拟机规范https://docs.oracle.com/javase/specs/jvms/se8/html/index.htmlhttps://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf工欲善其事,必先利其器。参考书 《Java虚拟机规范(Java.
本文主要基于周志明老师的《深入理解Java虚拟机》及部分网络资源。类加载 Class Loading在Java代码中,类型(Class)的加载、连接与初始化过程都是在程序运行期间完成的。类的生命周期 Class Cycle加载 loading查找并加载类的二进制数据连接 linking验证 verification确保被加载的类的正确性准备 preparation为类的静态变量分配内存,并将其初始化为默认值(不是初值!!!)解析 resolution把类中.
JVM小tips.编译期常量与运行时常量编译时,所有编译期常量的引用都将被替换成字面量(即1024),类型必须是基本类型或String。编译期常量public static final int i1 = 0;public static final boolean b2 = true;public static final String s1 = "0";public static final String s3 = "0" + "0";运行时常量public static final in
JVM小tips.实现一个自己的OOM代码如下:public class HeapOOM { /** * VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError */ public static void main(String[] args) { List<Object> list = new ArrayList<>(); while (true).
本文主要基于Java SE 8 版本的Java虚拟机规范和周志明老师的《深入理解Java虚拟机》。文章目录JVM Runtime Data Area程序计数寄存器 The pc RegisterJava虚拟机栈 Java Virtual Machine Stacks堆 Heap方法区 Method AreaPernGem和MetaspaceRun-Time Constant Pool 运行时常量池本地方法栈 Native Method Stacks直接内存/堆外内存栈帧 Frames局部变量表 Loc.
双亲委派相关代码类的加载器的双亲关系public class ClassLoaderDemo { public static void main(String[] args) { System.out.println("ClassLodarDemo's ClassLoader is " + ClassLoaderDemo.class.getClassLoader()); System.out.println("The Parent of ClassLodarDem
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号