
JVM
Geffin
欲戴王冠,必承其重
展开
-
深入浅出 Java 虚拟机(九)class 文件与方法调用
本文章为《深入浅出 Java 虚拟机》系列课程学习笔记,侵删。学习地址为 深入浅出 Java 虚拟机class 文件class 文件的结构如下:magic:魔数,用于标识当前 class 的文件格式,JVM 可据此判断该文件是否可以被解析,目前固定为 0xCAFEBABEmajor_version:主版本号minor_version:副版本号,这两个版本号用来标识编译时的 JDK 版本constant_pool_count:常量池计数器,等于常量池中的成员数加 1constant_po.原创 2020-11-03 16:36:56 · 307 阅读 · 0 评论 -
深入浅出 Java 虚拟机(八)分库分表导致的内存溢出
本文章为《深入浅出 Java 虚拟机》系列课程学习笔记,侵删。学习地址为 深入浅出 Java 虚拟机从一个案例开始我们现在有一个用户表,需要根据用户名查询用户,SQL 语句并不难:select * from user where fullname = "xxx" and other="other";在实际开发的过程中,经常需要动态拼接的效果,即当 fullname 或者 other 传入为空的时候,动态去掉这些查询条件(构建一个字符串 select * from user where 1=1,.原创 2020-10-02 00:24:54 · 279 阅读 · 0 评论 -
深入浅出 Java 虚拟机(七)JVM 内存溢出的几种场景
本文章为《深入浅出 Java 虚拟机》系列课程学习笔记,侵删。学习地址为 深入浅出 Java 虚拟机前言JVM 在哪个区域会发生内存溢出呢?为什么?如何解决?堆中发生的 OOM学过 JVM 的人都知道,堆中分为年轻代跟老年代,我们考虑堆中的 OOM 也从年轻代跟老年代的角度进行考虑。那如果年轻代内存占满,会发生什么呢?其实问题并不大,毕竟年轻代有老年代的担保嘛。但在老年代可就没有这么幸运了,它可没有别的空间进行担保,不得不触发一次 OOM,这是非常严重的后果。OOM 一般由内存溢出引起,表现在.原创 2020-07-26 13:16:24 · 355 阅读 · 0 评论 -
深入浅出 Java 虚拟机(六)大流量高并发下的调优
本文章为《深入浅出 Java 虚拟机》系列课程学习笔记,侵删。学习地址为 深入浅出 Java 虚拟机1 引言垃圾回收器一般使用默认参数,就可以比较好的运行。但如果用错了某些参数,那么后果可能会比较严重。如果你的应用程序目前已经满足了需求,那建议不要再随便动这些参数了。另外,优化代码获得的性能提升,远远大于参数调整所获得的性能提升,不要纯粹为了调参数而走了弯路。那么,GC 优化的目标是什...原创 2020-04-03 00:13:08 · 517 阅读 · 2 评论 -
深入浅出 Java 虚拟机(五)G1 垃圾回收器
本文章为《深入浅出 Java 虚拟机》系列课程学习笔记,侵删。学习地址为 深入浅出 Java 虚拟机1 CMS 垃圾回收器存在的问题以下场景很极端,但却经常发生。在发生 Minor GC 时,由于 Survivor 区已经放不下了,多出的对象只能提升(promotion)到老年代。但是此时老年代因为空间碎片的缘故,会发生 concurrent mode failure 的错误。这个时候,...原创 2020-03-17 18:42:57 · 533 阅读 · 0 评论 -
深入浅出 Java 虚拟机(四)GC
本文章为《深入浅出 Java 虚拟机》系列课程学习笔记,侵删。学习地址为 深入浅出 Java 虚拟机1 垃圾回收?按照语义上的意思,垃圾回收,首先就需要找到这些垃圾,然后回收掉。但是 GC 过程正好相反,它是先找到活跃的对象,然后把其他不活跃的对象判定为垃圾,然后删除。所以垃圾回收只与活跃的对象有关,和堆的大小无关。2 垃圾回收算法我们先来介绍几种常见的算法:标记:垃圾回收的第一步...原创 2020-03-11 20:07:22 · 594 阅读 · 2 评论 -
深入浅出 Java 虚拟机(三)OOM
本文章为《深入浅出 Java 虚拟机》系列课程学习笔记,侵删。学习地址为 深入浅出 Java 虚拟机1 JVM 中如何进行垃圾回收?JVM 的 GC 动作并不受程序控制,它会在满足条件的时候,自动触发。在发生 GC 的时候,一个对象,JVM 总能够找到引用它的祖先。找到最后,如果发现这个祖先已经名存实亡了,它们都会被清理掉。而能够躲过垃圾回收的那些祖先,比较特殊,它们的名字就叫作 GC ...原创 2020-03-08 13:46:56 · 375 阅读 · 2 评论 -
深入浅出 Java 虚拟机(二)类加载机制及深入解析字节码
本文章为《深入浅出 Java 虚拟机》系列课程学习笔记,侵删。学习地址为 深入浅出 Java 虚拟机1 类加载过程类的加载过程非常复杂,主要有这几个过程:加载、验证、准备、解析、初始化。在大多数情况下,类会按照图中给出的顺序进行加载。加载:将外部的 .class 文件,加载到 Java 的方法区内。加载阶段主要是找到并加载类的二进制数据,比如从 jar 包里或者 war 包里找到它们...原创 2020-03-07 17:18:33 · 506 阅读 · 2 评论 -
深入浅出 Java 虚拟机(一)JVM 基础与其内存管理
本文章为《深入浅出 Java 虚拟机》系列课程学习笔记,侵删。学习地址为 深入浅出 Java 虚拟机如何理解 JVM ?JVM,又称 Java Virtual Machine,Java 虚拟机。它能识别 .class 后缀的文件,并且能够解析它的指令,最终调用操作系统上的函数,完成我们想要的操作。事实上,我们可以把 JVM 等同于操作系统,把 Java 字节码等同于汇编语言。我们也可以把...原创 2020-02-25 21:07:16 · 621 阅读 · 0 评论