
JVM
文章平均质量分 85
秀强
物有本末,事有终始。
展开
-
【正本清源】Synchronized 源码全解之偏向锁的获取(基于 Openjdk12)
基于openjdk12的Synchronized锁升级过程之偏向锁的获取。原创 2023-01-29 15:20:20 · 637 阅读 · 0 评论 -
JDK8 源码角度分析 WeakHashMap 与 WeakReference 和 ReferenceQueue 三者关联
WeakHashMap 与 WeakReference 和 ReferenceQueue 三者关联关系。原创 2022-12-13 00:18:53 · 419 阅读 · 0 评论 -
JDK8 ThreadLocal 源码解析与最佳实践
ThreadLocal 中为什么要使用弱引用?ThreadLocal 什么情况下会内存泄漏?ThreadLocal 在 Spring 源码中的实践。原创 2022-12-11 19:24:34 · 627 阅读 · 0 评论 -
JVM 内存分代模型
文章目录堆内存逻辑分区新生代老年代堆内存逻辑分区新生代Eden : s0 : s1 = 8 : 1 : 1YGC回收之后,大多数的对象会被回收,活着的进入s0再次YGC(Young GC/Minor GC),活着的对象eden + s0 -> s1再次YGC,eden + s1 -> s0年龄足够 -> 老年代最大是 15(对象头里用4位二进制来表示一个对象的年龄),CMS 是 6s 区装不下 -> 老年代(分配担保)动态年龄判断虚拟机并不是永远地要原创 2022-03-14 13:53:25 · 1465 阅读 · 0 评论 -
JVM 常见垃圾回收算法
文章目录什么是垃圾如何定位垃圾常见的垃圾回收算法标记-清除(Mark-Sweep)标记-复制 (Copying)标记-压缩(Mark-Compact)总结什么是垃圾没有任何引用指向的一个对象或者多个对象(循环引用)如何定位垃圾引用计数(Reference Count)根可达算法(Root Searching)什么是根?JVM stacknative method stackrun-time constant poolstatic references in method area原创 2022-03-14 12:48:58 · 574 阅读 · 0 评论 -
JVM之双亲委派模型
文章目录类加载器类加载器原创 2020-09-09 19:10:20 · 464 阅读 · 0 评论 -
JVM G1 概述
文章目录Garbage First特点CSetRSet三色标记漏标问题参考资料Garbage FirstThe Garbage First Garbage Collector (G1 GC) is the low-pause, server-style generational garbage collector for Java HotSpot VM. The G1 GC uses con...原创 2020-03-30 23:55:27 · 420 阅读 · 0 评论 -
常用JVM调优指令概述
文章目录jpsjstackjstatjmapjhatjps打印java进程jstack打印堆栈信息,可以指定线程idjstack -l <pid> | grep <thread-hex-id> -A 10jstatjstat -gc 20293 500每500毫秒打印一次gc情况jmap堆中活动的对象信息统计(前20):jmap -histo:l...原创 2020-03-29 23:01:00 · 142 阅读 · 0 评论 -
什么是JVM调优
文章目录前情提要基础概念前情提要基础概念吞吐量:用户代码时间 /(用户代码执行时间 + 垃圾回收时间)响应时间:STW越短,响应时间越好原创 2020-03-29 22:16:22 · 1706 阅读 · 0 评论 -
JVM GC日志详解
文章目录前情提要测试代码设置参数运行效果日志解读前情提要测试代码package com.quintin.jvm;public class HelloGC { public static void main(String[] args) { for(int i=0; i<10000; i++) { byte[] b = new byt...原创 2020-03-28 16:04:36 · 341 阅读 · 0 评论 -
JVM GC日志文件滚动输出 GCLogFileRotation
文章目录测试代码设置参数运行效果参数解释参考资料普通情况下,GC日志文件内容会不断积累,进程重启后日志文件会被覆盖。为了防止GC日志文件过大,我们可以设置多个日志文件滚动输出。当最后一个文件满了以后,覆盖第一个文件。如果不用滚动输出的话,可以设置每天一个日志文件。测试代码package com.quintin.jvm;public class HelloGC { public ...原创 2020-03-28 15:32:44 · 2654 阅读 · 0 评论 -
JVM 常见垃圾回收器 概述
文章目录什么是垃圾如何定位垃圾常见的垃圾回收算法JVM内存分代模型(用于分代垃圾回收算法)堆内存逻辑分区新生代老年代MethodArea栈上分配线程本地分配TLAB一个对象从出生到消亡常见垃圾回收器SerialParNewParallel ScavengeCMSSerial OldParallel OldG1ZGCShenandoahEpsilon常见垃圾回收器组合什么是垃圾没有任何引用指向的...原创 2020-09-09 19:11:41 · 274 阅读 · 0 评论 -
Java中i++和++i在字节码层面有什么区别
文章目录先看一道题几个指令分析i++字节码文件分析++i字节码文件总结先看一道题 public static void main(String[] args) { int i = 8; i = i++; // 输出8 //i = ++i; // 输出9 System.out.println(i); }我们都知道 ...原创 2020-03-23 23:50:49 · 344 阅读 · 0 评论 -
Java 运行时数据区 Runtime Data Area
文章目录前情提要The pc RegisterJava Virtual Machine StacksFrameHeapMethod AreaRun-Time Constant PoolNative Method Stacks小结参考资料前情提要The pc RegisterThe Java Virtual Machine can support many threads of execu...原创 2020-03-23 22:58:58 · 310 阅读 · 0 评论 -
java 强软弱虚引用介绍(配测试代码)
文章目录NormalReferenceSoftReferenceWeakReferencePhantomReferenceNormalReference平时使用这些,例如:Object o = new Object()都是强引用。不多说了。SoftReference软引用是用来描述一些还有用但并非必须的对象。对于软引用关联着的对象,在系统将要发生内存溢出异常之前,将会把这些对象列进...原创 2020-03-08 19:20:37 · 193 阅读 · 0 评论