随笔分类 -  JVM

摘要:1. 现象:CPU 使用率高达 600% idea 打开项目,Mac 风扇狂转不止,通过 Mac 自带的 Activity Monitor 看到有个 Java 进程 CPU 使用率高达 600%,丝毫没有停止的迹象。 2. 分析:查找 CPU 使用率高的线程 按照经验来说,这时候的标准步骤如下: 使 阅读全文
posted @ 2022-07-08 18:04 Tailife 阅读(2946) 评论(0) 推荐(0) 编辑
摘要:收集算法是内存回收的理论基础,垃圾收集器是内存回收的具体实现。在 HotSpot 虚拟机实现中,目前有 7 种垃圾收集器实现,分别是 Serial、ParNew、Parallel Scavenge、CMS、Serial Old 和 G1。前三种是新生代垃圾收集器,后面四种是老年代垃圾收集器。它们可以 阅读全文
posted @ 2022-06-06 10:53 Tailife 阅读(140) 评论(1) 推荐(0) 编辑
摘要:注:本文是垃圾收集器读书笔记,内容基本来自《深入理解Java虚拟机(第2版)》 上一篇介绍了 GC 时哪些对象需要回收,本篇主要将主要介绍怎么回收,也就是垃圾收集算法。 垃圾收集算法 标记-清除算法 最基础的收集算法,分为“标记”和“清除”两个阶段:首先标记(也就是两次标记的过程)出所有需要回收的对 阅读全文
posted @ 2022-06-06 10:45 Tailife 阅读(44) 评论(0) 推荐(0) 编辑
摘要:注:本文是垃圾收集器读书笔记,内容基本来自《深入理解Java虚拟机(第2版)》 要了解垃圾收集器(Garbage Collector,GC),需要从以下 3 个问题着手: 哪些内存需要回收? 什么时候回收? 如何回收? 本文解决的是第一个问题:垃圾收集器在对堆进行回收前,如何确定哪些对象还“存活”着 阅读全文
posted @ 2022-06-06 10:42 Tailife 阅读(29) 评论(0) 推荐(0) 编辑
摘要:如果你对 Class 文件还熟悉的话,你应该知道 Class 文是一组以 8 位字节为单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件之中。也就是说,我们可以像读普通二进制文件一样读取 Class 文件,只不过需要遵循一定的规范(Java 虚拟机规范)。于是便有了用 Java 阅读全文
posted @ 2022-06-05 23:52 Tailife 阅读(113) 评论(0) 推荐(0) 编辑
摘要:前言 Class 文件是一组以 8 位字节为单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件之中。Class 文件中存储数据有两种数据类型:无符号数和表 无符号数:Class 文件中基本的数据结构,以 u1、u2、u4、u8 来分别代表 1 个字节、2 个字节、4 个字节和 8 阅读全文
posted @ 2022-06-05 23:51 Tailife 阅读(171) 评论(0) 推荐(0) 编辑
摘要:注:本文是类加载器总结,内容基本来自《深入理解Java虚拟机(第2版)》 上篇说过,类加载的过程分为 5 个阶段:加载、验证、准备、解析和初始化。 加载 “加载”是“类加载”过程的第一个阶段,在加载阶段,虚拟机主要做 3 件事情: 通过一个类的全限定名来获取定义此类的二进制字节流。 将这个字节流所代 阅读全文
posted @ 2022-06-05 23:48 Tailife 阅读(319) 评论(0) 推荐(0) 编辑
摘要:生命周期 类从被加载到虚拟机内存中开始,到卸载处内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading) 7 个阶段。 阅读全文
posted @ 2022-06-05 23:45 Tailife 阅读(103) 评论(0) 推荐(0) 编辑
摘要:7. 虚拟机类加载机制 7.1 概述 在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。而虚拟机如何加载这些Class文件?Class文件中的信息进入到虚拟机后会发生什么变化? 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可 阅读全文
posted @ 2022-06-05 21:13 Tailife 阅读(58) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示