![](https://img-blog.csdnimg.cn/85c5ec9efa4742248ab90f6eaedeaaf4.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
深入理解java虚拟机
文章平均质量分 95
1、jvm的使用和原理剖析
2、jvm的发展
程序员 jet_qi
白龙马服务平台员工,擅长并发开发(juc,netty),分布式(springboot+MQ,rpc,ES,dubbo),擅长商品域,财务域业务知识,是设计模式实战的狂热者。
博客主要分享内容:职场经验分享、自学教程、面试真题解析、面试经验分享、技术专题深度解析等。
关于我的文章:那些你很容易就能看得懂的文章,是不会让你显得与众不同的,我会保证所写的每一句话,每一行代码都经过了认真的推敲、仔细的斟酌,希望大家能有所收获。
吃不了学习的苦,就得吃生活的苦,别在最应该努力的年纪躺平
展开
-
JVM第一讲:JVM相关知识体系详解+面试(P6熟练 P7精通)
面试时常常被面试官问到JVM相关的问题。本系列将给大家构建JVM核心知识点全局知识体系,本文是JVM第一讲,JVM相关知识体系详解和相关面试题梳理。原创 2023-10-10 14:57:51 · 1523 阅读 · 4 评论 -
JVM第五讲:内存结构和内存分配,内存溢出和内存泄露
深入理解java虚拟机之内存结构和内存分配摘要:本文主要讲解JVM的内存结构和内存分配,首先是逻辑上的内存模型,分为三大块:方法区、堆内存以及栈内存,然后是内存分配策略,对象的创建/布局/访问,堆/栈的区别,JVM指令重排以及内存屏蔽的知识点,最后是对java程序内存溢出,内存泄露的讨论。hotspot虚拟机是java程序运行的平台,掌握JVM对于项目bug的解决大有裨益。1、JVM的内存...原创 2019-01-27 14:06:17 · 1045 阅读 · 1 评论 -
JVM第二讲:JVM 基础 - 字节码详解
本文是JVM第二讲,JVM 基础-字节码详解。源代码通过编译器编译为字节码,再通过类加载子系统进行加载到JVM中运行。原创 2023-10-11 12:06:23 · 556 阅读 · 1 评论 -
JVM第四讲:JVM 基础-类加载机制
JVM第二讲:类加载机制1、2、原创 2022-07-25 10:00:00 · 221 阅读 · 0 评论 -
JVM第四讲:JVM性能调优
本文是JVM第四讲:JVM性能调优原创 2022-03-26 10:00:00 · 372 阅读 · 0 评论 -
JVM第五讲:纵横数据如何应对洪峰推送
湖南网站群的公告相关数据需要通过纵横进行数据推送,从网站群的开发了解到每天大概有10W条数据需要推送,这个数据量均摊到一天来推送并不是什么问题,但是了解到这些数据可能会集中在短时间内(10分钟)推送,此时将会出现数据洪峰的情况。线程池异步漏斗算法和令牌算法示例代码如下:3.3、原限流方案根据业务类型在当前推送队列中的数量进行限流。例如公告数据的业务类型为 ,每种业务类型的限流数设为50,当单台实例内存中该种业务类型正在推送的数据量达到50后,该业务类型的数据从第51条开始都将会被拒绝,返给MQ稍后原创 2022-07-25 10:00:00 · 432 阅读 · 0 评论 -
JVM第六讲:JVM 基础 - Java 内存模型引入
很多人都无法区分Java内存模型和JVM内存结构,以及Java内存模型与物理内存之间的关系。本文是JVM第六讲,从堆栈角度引入JMM,然后介绍JMM和物理内存之间的关系, 为后面`JMM详解`, `JVM 内存结构详解`, `Java 对象模型详解`等做铺垫原创 2023-10-13 15:34:46 · 968 阅读 · 0 评论 -
JVM第六讲:线上环境 FGC 频繁,如何解决?
整体的解决流程其实还是比较简单的,没有太复杂的东西。大多数情况下,用好扩容、禁用、重启这几个常见手段即可解决大部分问题。个人经验而言,线上频繁FGC问题90%以上是由于开发同学代码存在问题导致的,例如常见的存在死循环、开无界队列等等。以上的问题在dump后,很容易就能定位到根本原因。而如果遇到诸如依赖的第三方jar存在bug导致的问题,例如Guava、Log4j,这种场景一般是在极端情况下出才会出现,所以一般只会出现在少数机器,禁用即可临时解决,然后后续再慢慢排查。...原创 2022-07-25 10:00:00 · 1548 阅读 · 0 评论 -
JVM第七讲:JVM 基础 - Java 内存模型详解
本文是JVM第七讲,JVM 基础 - Java 内存模型详解。主要转载自 Info 上[深入理解Java内存模型](https://www.infoq.cn/article/java_memory_model/), 作者程晓明。这篇文章对JMM讲的很清楚了,大致分三部分:1、重排序与顺序一致性;2、三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现;3、java 内存模型的设计,及其与处理器内存模型和顺序一致性内存模型的关系。原创 2023-10-16 15:38:57 · 339 阅读 · 0 评论 -
JVM第八讲:GC - Java 垃圾回收基础知识
本文是JVM第八讲, Java 垃圾回收基础知识。垃圾收集主要是针对堆和方法区进行;程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。原创 2024-03-21 12:04:56 · 1110 阅读 · 1 评论 -
JVM第九讲:深入理解java虚拟机之垃圾回收算法?CMS垃圾回收的基本流程?对象引用类型?
深入理解java虚拟机之垃圾算法?CMS垃圾回收的基本流程?摘要:思考三个问题:1、哪些内存需要回收?2、什么时候回收?3、如何回收?原创 2019-01-31 13:18:03 · 1517 阅读 · 1 评论 -
JVM第十三讲:调试排错 - JVM 调优参数
本文是JVM第十三讲,调试排错 - JVM 调优参数。对JVM涉及的常见的调优参数和垃圾回收参数进行阐述。原创 2023-10-18 23:08:21 · 492 阅读 · 0 评论 -
JVM第十四讲:调试排错 - Java 内存分析之堆内存和MetaSpace内存
本文是JVM第十四讲,以两个简单的例子(`堆内存溢出`和`MetaSpace (元数据) 内存溢出`)解释Java 内存溢出的分析过程。原创 2023-10-17 23:47:49 · 1403 阅读 · 0 评论 -
JVM第十五讲:调试排错 - Java 内存分析之堆外内存
本文是JVM第十五讲,Java 内存分析之堆外内存调试排错。Java 堆外内存分析相对来说是复杂的,美团技术团队的[Spring Boot引起的“堆外内存泄漏”排查及经验总结](https://tech.meituan.com/2019/01/03/spring-boot-native-memory-leak.html)可以为很多Native Code内存泄漏/占用提供方向性指引。原创 2023-10-19 21:12:09 · 826 阅读 · 0 评论 -
JVM第十六讲:调试排错 - Java 线程分析之线程Dump分析
本文是JVM第十六讲,Java 线程分析之线程Dump分析。Thread Dump是非常有用的诊断Java应用问题的工具。原创 2023-10-20 23:56:55 · 631 阅读 · 0 评论 -
JVM第十七讲:调试排错 - Java 问题排查之Linux命令
本文是JVM第十七讲, Java 问题调试排错。Java 在线问题排查主要分两篇:本文是第一篇,通过linux常用命令排查。原创 2023-10-21 23:08:33 · 1262 阅读 · 1 评论 -
JVM第十八讲:调试排错 - Java 问题排查之工具单
程序员想要有更好的发展,排查问题的能力一定得加强。举个例子:cpu100% 怎么排查,线上接口逐渐变慢了该怎么排查?慢查询该如何治理?你的思路是啥?本文是JVM第十八讲, Java 问题调试排错。Java 在线问题排查主要分两篇:本文是第二篇,通过java调试/排查工具进行问题定位。原创 2023-10-22 12:18:45 · 344 阅读 · 0 评论 -
JVM第二十三讲:Java动态调试技术原理
本文是JVM第二十三讲,Java动态调试技术原理。转载自 美团技术团队胡健的Java 动态调试技术原理及实践,通过学习java agent方式进行动态调试,了解目前很多大厂开源的一些基于此的调试工具 (例如来自阿里开源的Arthas)。原创 2023-10-29 18:23:42 · 606 阅读 · 0 评论 -
面试准备之JVM的组成、垃圾回收机制(Deprecated @since20201201)
1.JVM的组成 JVM定义了控制Java代码解释执行和具体实现的五种规格,因此把JVM分成了6个部分:JVM解释器、指令系统、寄存器、栈、存储区和碎片回收区。 ◆JVM解释器:即这个虚拟机处理字段码的CPU。 ◆JVM指令系统:该系统与计算机很相似,一条指令由操作码和操作数两部分组成。操作码为8位二进制数,主要是为了说明一条指令的功能,操作数可以根据需要而定,JVM最多有256...原创 2018-08-08 01:01:18 · 205 阅读 · 0 评论