随笔分类 - 05. JVM 虚拟机入门教程

用通俗易懂的语言,手把手带你入门 JVM!
摘要:查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程。如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示。 除此之外,还可以指定下面的参数自定义输出信息: | 参数 | 含义 | |: :|: :| | q|指定jps只输出进程 阅读全文
posted @ 2018-12-10 20:17 陈树义 阅读(5058) 评论(10) 推荐(5) 编辑
摘要:博主个人独立站点开通啦!欢迎点击访问:https://shuyi.tech 说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志。而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数。今天就让我们来学习一下 Java 阅读全文
posted @ 2018-12-10 20:16 陈树义 阅读(14774) 评论(2) 推荐(4) 编辑
摘要:今天要说的是如何查看 JVM 中已经设置的参数,包括显示参数和隐式参数。 打印显式参数 XX:+PrintVMOptions 该参数表示程序运行时,打印虚拟机接受到的命令行显式参数。我们用下面的命令运行程序: 输出结果: 可以看到我们设置了 和`+PrintVMOptions`两个参数,最后运行时也 阅读全文
posted @ 2018-12-10 20:16 陈树义 阅读(7323) 评论(0) 推荐(0) 编辑
摘要:我们都知道 JVM 在启动的时候会去加载类信息,那么我们怎么得知他加载了哪些类,又卸载了哪些类呢?我们这一节就来介绍四个 JVM 参数,使用它们我们就可以清晰地知道 JVM 的类加载信息。 为了方便演示,我们使用下面的程序作为本次的演示程序。 跟踪类的加载和卸载 verbose:class 我们使用 阅读全文
posted @ 2018-12-10 20:16 陈树义 阅读(3973) 评论(0) 推荐(1) 编辑
摘要:博主个人独立站点开通啦!欢迎点击访问:https://shuyi.tech JVM 中最重要的一部分就是堆空间了,基本上大多数的线上 JVM 问题都是因为堆空间造成的 OutOfMemoryError。因此掌握 JVM 关于堆空间的参数配置对于排查线上问题非常重要。 tips:本文所有配置,如无特别 阅读全文
posted @ 2018-12-10 10:11 陈树义 阅读(9958) 评论(6) 推荐(4) 编辑
摘要:我们经常会听到许多垃圾回收的术语,例如: Minor GC、Major GC、Young GC、Old GC、Full GC、Stop The World 等。但这些 GC 术语到底指的是什么,它们之间的区别到底是什么?今天我们就来详细说说。 Minor GC 从年轻代空间回收内存被称为 Minor 阅读全文
posted @ 2018-12-10 10:10 陈树义 阅读(7147) 评论(5) 推荐(4) 编辑
摘要:前面文章中,我们介绍了 Java 虚拟机的内存结构,Java 虚拟机的垃圾回收机制,那么这篇文章我们说说具体执行垃圾回收的垃圾回收器。 总的来说,Java 虚拟机的垃圾回收器可以分为四大类别: 串行回收器、并行回收器、CMS 回收器、G1 回收器。 串行回收器 串行回收器是指使用单线程进行垃圾回收的 阅读全文
posted @ 2018-11-22 09:10 陈树义 阅读(7075) 评论(2) 推荐(7) 编辑
摘要:在第 6 讲中我们说到 Java 虚拟机的内存结构,提到了这部分的规范其实是由《Java 虚拟机规范》指定的,每个 Java 虚拟机可能都有不同的实现。其实涉及到 Java 虚拟机的内存,就不得不谈到 Java 虚拟机的垃圾回收机制。因为内存总是有限的,我们需要一个机制来不断地回收废弃的内存,从而实 阅读全文
posted @ 2018-11-21 10:03 陈树义 阅读(8789) 评论(2) 推荐(12) 编辑
摘要:博主个人独立站点开通啦!欢迎点击访问:https://shuyi.tech 当编译器将 Java 源码编译为字节码之后,虚拟机便可以将字节码读取进内存,从而进行解析、运行等整个过程,这个过程我们叫:Java 虚拟机的类加载机制。JVM 虚拟机执行 class 字节码的过程可以分为七个阶段:加载、验证 阅读全文
posted @ 2018-11-20 09:41 陈树义 阅读(11614) 评论(16) 推荐(28) 编辑
摘要:博主个人独立站点开通啦!欢迎点击访问:https://shuyi.tech 看到这里,我相信大家对于一个 Java 源文件是如何变成字节码文件,以及字节码文件的含义已经非常清楚了。那么接下来就是让 Java 虚拟机运行字节码文件,从而得出我们最终想要的结果了。在这个过程中,Java 虚拟机会加载字节 阅读全文
posted @ 2018-11-16 10:50 陈树义 阅读(12394) 评论(0) 推荐(12) 编辑
摘要:博主个人独立站点开通啦!欢迎点击访问:https://shuyi.tech 温馨提示:此篇文章长达两万字,图片50多张,内容非常多,建议收藏后再看。 前面我们说到 Java 虚拟机使用字节码实现了跨平台的愿景,无论什么系统,我们都可以使用 Java 虚拟机解释执行字节码文件。但其实字节码是有一套规范 阅读全文
posted @ 2018-11-12 10:01 陈树义 阅读(16429) 评论(23) 推荐(39) 编辑
摘要:博主个人独立站点开通啦!欢迎点击访问:https://shuyi.tech 在上篇文章我们聊到,无论什么语言写的代码,其到最后都是通过机器码运行的,无一例外。那么对于 Java 语言来说,其从源代码到机器码,这中间到底发生了什么呢?这就是今天我们要聊的。 如下图所示,编译器可以分为:前端编译器、JI 阅读全文
posted @ 2018-11-10 10:13 陈树义 阅读(18526) 评论(13) 推荐(16) 编辑
摘要:博主个人独立站点开通啦!欢迎点击访问:https://shuyi.tech 我们都知道在 Windows 系统上一个软件包装包是 exe 后缀的,而这个软件包在苹果的 Mac OSX 系统上是无法安装的。类似地,Mac OSX 系统上软件安装包则是 dmg 后缀,同样无法在 Windows 系统上安 阅读全文
posted @ 2018-11-09 08:58 陈树义 阅读(13743) 评论(2) 推荐(8) 编辑
摘要:说起 Java 虚拟机,许多人就会将其与 HotSpot 虚拟机等同看待。但实际上 Java 虚拟机除了 HotSpot 之外,还有 Sun Classic VM、Exact VM、BEA JRocketit、IBM J9 等等。今天我们就来简单回顾下 Java 虚拟机的发展历史。 虚拟机始祖:Su 阅读全文
posted @ 2018-11-08 11:32 陈树义 阅读(8567) 评论(1) 推荐(3) 编辑
摘要:Java 语言是一门存在了 20 多年的语言,其年纪比我自己还大。虽然存在了这么长时间,但 Java 至今都是最大的工业级语言,许多大型互联网公司均采用 Java 来实现其业务系统。大到国际电商巨头阿里巴巴,小到无名小公司,我们均可看到 Java 的身影。 我是 2010 年开始接触 Java 语言 阅读全文
posted @ 2018-11-07 09:14 陈树义 阅读(10257) 评论(1) 推荐(6) 编辑
摘要:JVM是深入理解语言的基础,也是排查线上问题的基础。 阅读全文
posted @ 2018-11-06 08:21 陈树义 阅读(26882) 评论(17) 推荐(35) 编辑