
Java虚拟机详解
Java虚拟机详解
sllin
这个作者很懒,什么都没留下…
展开
-
Java虚拟机详解(十一)------双亲委派模型
目录 1、类加载器 2、双亲委派模型 3、双亲委派模型实现源码 4、自定义类加载器 在上一篇博客,我们介绍了类加载过程,包括5个阶段,分别是“加载”,“验证”,“准备”,“解析”,“初始化”,如下图所示: 本篇博客,我们来介绍Java虚拟机的双亲委派模型,在介绍之前,我先抛出一个问题: 我们知道,在JDK源码中,有各种Java自带的类,比如java.lang.String,java.util.List等,那么我们自己的项目中,能够写一个命名为java.lang.S..原创 2020-06-18 08:10:56 · 122 阅读 · 0 评论 -
Java虚拟机详解(十)------类加载过程
目录 1、类的生命周期 2、加载 3、验证 ①、文件格式验证 ②、元数据验证 ③、字节码验证 ④、符号引用验证 4、准备 5、解析 6、初始化 在上一篇文章中,我们详细的介绍了Java类文件结构,那么这些Class文件是如何被加载到内存,由虚拟机来直接使用的呢?这就是本篇博客将要介绍的——类加载过程。 回到顶部 1、类的生命周期 类从被加载到虚拟机内存开始,到卸载出内存为止,其声明周期流程如下: 上图中红色的5个部分(加载、验证、准备、初始化、.原创 2020-06-18 08:10:47 · 139 阅读 · 0 评论 -
Java虚拟机详解(九)------类文件结构
目录 1、Java虚拟机的两个特性 ①、语言无关性 ②、平台无关性 2、class 字节码文件介绍 ①、字节码文件 ②、javap 命令 3、无符号数和表 4、魔数 5、Class 文件的版本号 6、常量池 ①、常量池容量计数值 ②、常量池内容 7、访问标志 8、类索引、父类索引和接口索引集合 9、字段表集合 10、方法表集合 11、属性表集合 我们知道计算机是由晶体管、电路板等组装而成的电子设备,而这些电子设备其实只能识别0与1的信号。 .原创 2020-06-16 17:46:35 · 168 阅读 · 0 评论 -
Java虚拟机详解(八)------虚拟机监控和分析工具(2)——可视化
目录 1、JConsole ①、启动 JConsole ②、监控界面介绍 ③、配置Tomcat远程监控 ④、配置远程jar包监控 2、JVisualVM ①、启动 JVisualVM ②、监控界面介绍 ③、插件机制 ④、配置远程连接 ⑤、使用文档 上篇博客我们介绍了虚拟机监控和分析命令行工具,由于其不够直观,不是很容易排查问题,那么本篇博客我们就来介绍几个可视化工具。 回到顶部 1、JConsole JConsole(Java Monito..原创 2020-06-16 17:41:54 · 167 阅读 · 0 评论 -
Java虚拟机详解(七)------虚拟机监控和分析工具(1)——命令行
目录 1、jps:显示虚拟机进程 2、jstat:统计监视虚拟机信息工具 3、jinfo:实时的查看和调整虚拟机各项参数 4、jmap:内存映像工具 5、jstack:Java堆栈跟踪工具 通过前面的几篇博客,我们介绍了Java虚拟机的内存分配以及内存回收等理论知识,了解这些知识对于我们在实际生产环境中提高系统的运行效率是有很大的帮助的。但是话又说回来,在实际生产环境中,线上项目正在运行,我们怎么去监控虚拟机运行效率?又或者线上项目发生了OOM,异常堆栈信息,我们又怎么去抓取,然后怎么..原创 2020-06-16 17:39:40 · 248 阅读 · 0 评论 -
Java虚拟机详解(六)------内存分配
目录 1、Minor GC 、Major GC 和 Full GC 1、对象优先在 Eden 上分配 2、大对象直接进行老年代 3、长期存活的对象将进入老年代 4、新生代Survivor 区相同年龄所有对象之和大于 Survivor 所有对象之和的一半,大于等于该年龄的对象进入老年代 5、空间分配担保原则 我们说Java是自动进行内存管理的,所谓自动化就是,不需要程序员操心,Java会自动进行内存分配和内存回收这两方面。 前面我们介绍过如何通过垃圾回收器来回收内存,那么本篇博客我.原创 2020-06-16 17:38:58 · 143 阅读 · 0 评论 -
Java虚拟机详解(五)------JVM参数(持续更新)
目录 1、标准参数 2、X 参数 3、XX参数 ①、Boolean类型 ②、Key-Value类型 4、参数详解(持续更新) JVM参数有很多,其实我们直接使用默认的JVM参数,不去修改都可以满足大多数情况。但是如果你想在有限的硬件资源下,部署的系统达到最大的运行效率,那么进行相关的JVM参数设置是必不可少的。下面我们就来对这些JVM参数进行详细的介绍。 JVM参数主要分为以下三种(可以根据书写形式来区分): 回到顶部 1、标准参数 标准参数,顾名思义,标准参数中.原创 2020-06-16 17:36:52 · 297 阅读 · 0 评论 -
Java虚拟机详解(四)------垃圾收集器
目录 1、垃圾收集器种类 2、Serial收集器 3、ParNew收集器 4、Parallel Scavenge收集器 5、Serial Old收集器 6、Parallel Old收集器 7、CMS收集器 8、G1收集器 9、ZGC 收集器 10、如何选择垃圾收集器 11、几个名词解释 上一篇博客我们介绍了Java虚拟机垃圾回收,介绍了几种常用的垃圾回收算法,包括标记-清除,标记整理,复制等,这些算法我们可以看做是内存回收的理论方法,那么在Java虚拟机中,由谁来具体实现.原创 2020-06-16 17:33:21 · 129 阅读 · 0 评论 -
Java虚拟机详解(三)------垃圾回收
目录 1、为什么要进行垃圾回收 2、为什么要了解垃圾回收 3、回收哪部分区域内存 4、如何判断对象为垃圾对象 ①、引用计数算法 ②、根搜索算法 5、如何进行垃圾回收 ①、标记-清除算法 ②、复制算法 ③、标记-整理算法 ④、分代收集算法 6、何时进行垃圾回收 如果对C++这门语言熟悉的人,再来看Java,就会发现这两者对垃圾(内存)回收的策略有很大的不同。 C++:垃圾回收很重要,我们必须要自己来回收!!! Java:垃圾回收很重要,我们必须交给.原创 2020-06-16 17:30:58 · 148 阅读 · 0 评论 -
Java虚拟机详解(二)------运行时内存结构
目录 1、运行时数据区结构图 2、程序计数器 3、虚拟机栈 4、本地方法栈 5、Java堆 6、方法区 7、运行时常量池 8、直接内存 首先通过一张图了解 Java程序的执行流程: 我们编写好的Java源代码程序,通过Java编译器javac编译成Java虚拟机识别的class文件(字节码文件),然后由 JVM 中的类加载器加载编译生成的字节码文件,加载完毕之后再由 JVM 执行引擎去执行。在加载完毕到执行过程中,JVM会将程序执行时用到的数据和相关信息存储在运行时数.原创 2020-06-16 17:29:51 · 125 阅读 · 0 评论 -
Java虚拟机详解(一)------简介
目录 1、Oracle Java SE 8 产品组件 2、虚拟机 3、Java虚拟机 4、Java虚拟机种类 本系列博客我们将以当前默认的主流虚拟机HotSpot 为例,详细介绍 Java虚拟机。以 JDK1.7 为主,同时介绍与 JDK1.8 的不同之处,通过Oracle官网以及各种文献进行整理,并加以验证,力求保证这块知识的正确性,完整性。 以下是本系列博客参考的相关文档: ①、JDK1.7虚拟机规范:https://docs.oracle.com/javase/specs.原创 2020-06-16 17:29:20 · 166 阅读 · 0 评论