JVM学习
文章平均质量分 93
杀神lwz
是日已过,命亦随减;如少水鱼,斯有何乐;当勤精进,如救头燃;但念无常,慎勿放逸;
展开
-
Java强软弱虚引用
强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。弱引用需要用java.lang.ref.WeakReference类来实现,它比软引用的生存期更短,对于只有弱引用的对象来说,只要垃圾回收机制一运行,不管JVM的内存空间是否够用,都会回收该对象占用的内存。创建引用的时候可以指定关联的队列,当GC释放对象内存的时候,会将引用加入到引用队列,如果程序发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动,原创 2023-12-30 23:13:03 · 1156 阅读 · 0 评论 -
JVM Optimization Learning(六)-ZGC
得益于颜色指针的支持,ZGC收集器能仅从引用上就明确得知一个对象是否处于重分配分配集之中,如果用户线程此时并发访问了位于重分配集中的对象,这次访问将被读屏障所截获,然后立即根据Region上的转发表记录将访问转发到新复制的对象上,并同时修正更新该引用的值,使其直接指向新对象,ZGC的这种行为称作指针的“自愈”能力。1、{aarch64,arm32-hflt,mipsel,mips64el,ppc64le,s390x,x86_32,x86_64}:架构,linux中使用arch命令选择对应的架构。原创 2023-12-10 00:00:42 · 344 阅读 · 0 评论 -
JVM Optimization Learning(五)-G1
humongous:/hjuːˈmʌŋɡəs/ 巨大的、庞大的。压缩空闲空间不会延长GC的暂停时间。适用不需要实现很高的吞吐量的场景。更易预测的GC暂停时间。原创 2023-12-05 00:16:59 · 410 阅读 · 0 评论 -
JVM Optimization Learning(二)
java虚拟机执行字节码时,遇到一个操作码,操作码第一次使用一个指向另一类的符号引用,则虚拟机就必须解析这个符号引用。lambda表达式或者反射或者其他动态语言scala kotlin,或者CGLib ASM,动态产生的class,会用到的指令。2.将符号引用替换为直接引用,这样当再次遇到相同的引用时,可以使用这个直接引用,省去再次解析的步骤。3.当java虚拟机解析一个符号引用时,class文件检查器的第四趟扫描确保了这个引用时合法的。提示:结合GC, 一直创建字符串常量,观察堆,和Metaspac。原创 2023-07-22 22:46:52 · 418 阅读 · 0 评论 -
Arthas(阿尔萨斯)--(四)
options:全局开关。原创 2023-11-19 23:43:40 · 339 阅读 · 0 评论 -
Arthas(阿尔萨斯)--(三)
命令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,便于你理解业务逻辑;如需批量下载指定包的目录的 class 字节码。,“Search-Class” 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息,这个命令支持的参数有。“Search-Method” 的简写,这个命令能搜索出所有已经加载了 Class 信息的方法信息。功能,也就是说所有当前类的子类也会被搜索出来,想要精确的匹配,请打开。jad:反编译指定已加载类的源码。原创 2023-11-16 23:06:45 · 972 阅读 · 0 评论 -
JVM Optimization Learning(四)
根据需求进行JVM规划和预调优优化运行JVM运行环境(慢,卡顿)解决JVM运行过程中出现的各种问题(OOM)原创 2023-10-05 22:45:08 · 450 阅读 · 0 评论 -
JVM Optimization Learning(三)-Garbage Collector tuning
学习jvm的人,基本都阅读过上面这段话,这里讲的是动态年龄的判定。虚拟机并不是永远地要求对象的年龄必须达到了MaxTenuringThreshold才能晋升老年代,如果在Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代,无须等到MaxTenuringThreshold中要求的年龄。年龄1的占用了33%,年龄2的占用了33%,累加和超过默认的TargetSurvivorRatio(50%),年龄2和年龄3的对象都要晋升。原创 2023-07-23 23:51:14 · 138 阅读 · 0 评论 -
JVM Optimization Learning(一)
继承ClassLoader并重写findClass方法Class原创 2023-07-17 00:24:10 · 432 阅读 · 0 评论 -
JVM学习(三)--运行时数据区
一、运行时数据区 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。JVM学习(一)............原创 2022-06-30 21:00:00 · 124 阅读 · 0 评论 -
JVM学习(二)--类加载器子系统
一、内存结构内存结构的简图二、类的加载器及类的加载过程类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)加载阶段:1、通过一个类的全原创 2022-05-04 22:00:00 · 162 阅读 · 0 评论 -
JVM学习(一)
一、概述TIOBE语言热度排行榜,每个月都会更新编程语言排行榜。世界上没有最好的编程语言,只有最适用于具体应用场景的编程语言。Oracle官网,找到Java Downloads,Online Documentation-->Java Language and Virtual Machine Specifications--->找到相应版本自己进行下载JVM官方规范文档。Java Language and Virtual Machine SpecificationsThe ..原创 2022-04-30 03:30:00 · 1893 阅读 · 0 评论