![](https://img-blog.csdnimg.cn/20210508012242493.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM相关
文章平均质量分 93
JVM相关
一直不懂
笔记
展开
-
深入理解堆外内存 Metaspace
在之前介绍的分代垃圾回收算法中,我们一直有一个永久代存在,叫 PermGen,内存上它是挨着堆的。为了垃圾回收方便,HotSpot 在永久代上一直是使用老年代的垃圾回收算法。永久代主要存放以下数据:JVM internal representation of classes and their metadataClass staticsInterned strings从 JDK7 开始,JDK 开发者们就有消灭永久代的打算了。有部分数据移到永久代之外了:Symbols => nati转载 2021-04-24 22:05:10 · 15810 阅读 · 0 评论 -
偏向锁、轻量级锁、重量级锁解析
Java 对象头在32位虚拟机和64位虚拟机的 Mark Word 所占用的字节大小不一样,32位虚拟机的 Mark Word 和 class Pointer 分别占用 32bits 的字节,而 64位虚拟机的 Mark Word 和 class Pointer 占用了64bits 的字节,下面我们以 32位虚拟机为例,来看一下其 Mark Word 的字节具体是如何分配的32位虚拟机64位虚拟机偏向锁、轻量级锁的状态转化及对象Mark Word的关系偏向锁的获得和撤销流程时序图流程图原创 2021-02-19 21:39:56 · 5107 阅读 · 6 评论 -
自己动手实现远程执行功能
在排查问题的过程中,想查看内存中的一些参数值,却又没有方法把这些值输出到界面或日志中,又或者定位到某个缓存数据有问题,但缺少缓存的统一管理界面,不得不重启服务才能清理这个缓存。类似的需求有一个共同的特点,那就是只要在服务中执行一段程序代码,就可以定位或排除问题,但就是偏偏找不到可以让服务器执行临时代码的途径,这时候就会希望Java服务器中也有提供类似Groovy Console的功能。JDK1...转载 2019-08-23 00:07:45 · 1016 阅读 · 0 评论 -
面试volatile关键字时,我们应该具备哪些谈资?
写在前面在 可见性有序性,Happens-before来搞定 文章中,happens-before 的原则之一: volatile变量规则对一个 volatile 域的写, happens-before 于任意后续对这个 volatile 域的读按理说了解了这个规则,对 volatile 的使用就已经足够了,但是面试官可是喜欢刨根问到底的,为了更透彻的了解 volatile 的内存语义与读写语义,为了面试多一些谈资进而获得一些加分项,同时尽早填补前序文章留下的坑,于是乎这篇文章就这样尴尬的诞生了转载 2020-06-05 20:10:59 · 321 阅读 · 0 评论 -
可见性有序性,Happens-before来搞定
写在前面上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug为了解决 CPU,内存,IO 的短板,增加了缓存,但这导致了可见性问编译器/处理器擅自优化 ( Java代码在编译后会变成 Java 字节码, 字节码被类加载器加载到 JVM 里, JVM 执行字节码, 最终需要转化为汇编指令在 CPU 上执行) ,导致有序性问题初衷是好的,但引发了新问题,最有效的办法就禁止缓存和编译优化,问题虽然转载 2020-06-05 19:44:58 · 361 阅读 · 0 评论 -
双亲委派模型
双亲委派模型在介绍这个Java技术点之前,先试着思考以下几个问题:为什么我们不能定义同名的 String 的 java 文件?多线程的情况下,类的加载为什么不会出现重复加载的情况?下面代码,虚拟机是怎样初始化注册 Mysql 连接驱动(Driver)的?Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?characterEncoding=GBK", "root", "000000");转载 2020-06-07 18:12:16 · 250 阅读 · 1 评论 -
一篇搞懂Java ClassLoader
ClassLoader 做什么的?顾名思义,它是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存形式的 Class 对象。字节码可以来自于磁盘文件 *.class,也可以是 jar 包里的 *.class,也可以来自远程服务器提供的字节流,字节码的本质就是一个字节数组 []byte,它有特定的复杂的内部格式。有很多字节码加密技术就是依靠定制 ClassLoader...转载 2019-12-12 21:09:58 · 247 阅读 · 2 评论 -
GC原理及调优
本文介绍 GC 基础原理和理论,GC 调优方法思路和方法,基于 Hotspot jdk1.8,学习之后你将了解如何对生产系统出现的 GC 问题进行排查解决。内容主要如下:GC 基础原理,涉及调优目标,GC 事件分类、JVM 内存分配策略、GC 日志分析等。 CMS 原理及调优。 G1 原理及调优。 GC 问题排查和解决思路。GC 基础原理GC 调优目标大多数情况下对 Jav...转载 2019-11-11 12:25:59 · 292 阅读 · 0 评论