JVM学习
文章平均质量分 95
JVM
幻の心
燕影过寒潭,窈窕杨柳慢摆风
菩提本无树
展开
-
补充-2:使用OQL语言查询对象信息
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)MAT支持一种类似于SQL的查询语言OQL(Object Query Language)。OQL使用类SQL语法,可以在堆中进行对象的查找和筛选。1. SELECT子句在MAT中,Select子句的格式与SQL基本一致,用于指定要显示的列。Select子句中可以使用“*”,查看结果对象的引用实例(相当于outgoing references)。SELECT * FROM java.util.Vec...转载 2021-08-20 18:54:53 · 229 阅读 · 0 评论 -
补充-1:浅谈深堆与内存泄漏
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)1. 浅堆(Shallow Heap)浅堆是指一个对象所消耗的内存。在32位系统中,一个对象引用会占据4个字节,一个int类型会占据4个字节,long型变量会占据8个字节,每个对象头需要占用8个字节。根据堆快照格式不同,对象的大小可能会同8字节进行对齐。以String为例:2个int值共占8字节,对象引用占用4字节,对象头8字节,合计20字节,向8字节对齐,故占24字节。(jdk7中)...转载 2021-08-20 18:49:24 · 418 阅读 · 0 评论 -
22.分析GC日志
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)22.1. GC分类针对HotSpot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)部分收集(Partial GC):不是完整收集整个Java堆的垃圾收集。其中又分为: 新生代收集(Minor GC / Young GC):只是新生代(Eden / S0, S1)的垃圾收集 老年代收集(Major GC / Old GC):只是老年转载 2021-08-20 18:42:45 · 339 阅读 · 0 评论 -
21.JVM运行时参数
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)21.1. JVM参数选项官网地址:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html21.1.1. 类型一:标准参数选项> java -help用法: java [-options] class [args...] (执行类) 或 java [-options] -jar jarfi转载 2021-08-20 18:38:54 · 396 阅读 · 0 评论 -
20.JVM监控以及诊断工具-GUI篇
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)20. JVM监控及诊断工具-GUI篇20.1. 工具概述使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但它们存在下列局限:无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间等(这对定位应用性能瓶颈至关重要)。 要求用户登录到目标 Java 应用所在的宿主机上,使用起来不是很方便。 分析数据通过终端输出,结果展示不够直观。为此,...转载 2021-08-20 18:26:02 · 627 阅读 · 0 评论 -
19.JVM监控以及诊断工具-命令行篇
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)19. JVM监控及诊断工具-命令行篇19.1. 概述性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验至上的今天,解决好应用的性能问题能带来非常大的收益。Java 作为最流行的编程语言之一,其应用性能诊断一直受到业界广泛关注。可能造成 Java 应用出现性能问题的因素非常多,例如线程控制、磁盘读写、数据库访问、网络I/O、垃圾收集等。想要定位这些问题,一款优秀的性...转载 2021-08-20 18:12:31 · 344 阅读 · 0 评论 -
18.JVM性能监控与调优篇
1. 概述篇笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)1. 概述篇1.1. 大厂面试题支付宝:支付宝三面:JVM性能调优都做了什么?小米:有做过JVM内存优化吗?从SQL、JVM、架构、数据库四个方面讲讲优化思路蚂蚁金服:JVM的编译优化jvm性能调优都做了什么JVM诊断调优工具用过哪些?二面:jvm怎样...转载 2021-08-20 18:03:20 · 177 阅读 · 0 评论 -
17.再谈类的加载器
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)17. 再谈类的加载器17.1. 概述类加载器是JVM执行类加载机制的前提。ClassLoader的作用:ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部,转换为一个与目标类对应的java.lang.Class对象实例。然后交给Java虚拟机进行链接...转载 2021-08-12 19:49:40 · 379 阅读 · 0 评论 -
16. 类的加载过程(类的生命周期)详解
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)16. 类的加载过程(类的生命周期)详解16.1. 概述在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段:其中,验证、准备、解析3个部分统称为链接(Linking)从程序中类的使用过程看转载 2021-07-25 15:44:14 · 1649 阅读 · 0 评论 -
15.字节码指令集
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)2. 字节码指令集2.1. 概述2.1.1. 执行模型如果不考虑异常处理的话,那么Java虚拟机的解释器可以使用下面这个伪代码当做最基本的执行模型来理解do{ 自动计算PC寄存器的值加1; 根据PC寄存器的指示位置,从字节码流中取出操作码; if(字节码存在操作数) 从字节码流中取出操作数; 执行操作码所定义的操作;}while(字节码长度>0);...转载 2021-07-20 23:53:58 · 547 阅读 · 0 评论 -
14.class文件结构
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)虚拟机的基石:Class文件字节码文件里是什么 字节码是一种二进制文件,内容是JVM指令,不像C、C++经由编译器直接生成机器码什么是字节码指令 Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(operand)所构成。虚拟机中许多指令不包含操作数,只有一个操作码。如:如何解读字节码文件...转载 2021-07-20 19:40:16 · 256 阅读 · 0 评论 -
13. 垃圾回收器
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)13. 垃圾回收器13.1. GC分类与性能指标13.1.1. 垃圾回收器概述垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。13.1.2. 垃圾收集器分类按线程数...转载 2021-07-06 21:23:54 · 137 阅读 · 0 评论 -
12. 垃圾回收相关概念
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)12. 垃圾回收相关概念12.1. System.gc()的理解在默认情况下,通过system.gc()或者Runtime.getRuntime().gc() 的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。然而System.gc() 调用附带一个免责声明,无法保证对垃圾收集器的调用。(不能确保立即生效)JVM实现...转载 2021-07-05 21:14:51 · 87 阅读 · 0 评论 -
11. 垃圾回收概述及算法
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)目录11. 垃圾回收概述及算法11.1. 垃圾回收概述11.1.1. 什么是垃圾?11.1.2. 为什么需要GC11.1.3. 早期垃圾回收11.1.4. Java垃圾回收机制11.2. 垃圾回收相关算法11.2.1. 标记阶段:引用计数算法11.2.2. 标记阶段:可达性分析算法11.2.3. 对象的finalization机制11.2.4. MAT与JProfiler的GC R.转载 2021-06-30 20:45:33 · 274 阅读 · 0 评论 -
10. StringTable
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)目录10. StringTable10.1. String的基本特性10.1.1. String在jdk9中存储结构变更MotivationDescription10.1.2. String的基本特性10.2. String的内存分配10.3. String的基本操作10.4. 字符串拼接操作10.5. intern()的使用10.5.1. intern的使用:JDK6 vs J转载 2021-06-28 21:32:57 · 75 阅读 · 0 评论 -
9. 执行引擎
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)目录9. 执行引擎9.1. 执行引擎概述9.1.1. 执行引擎的工作流程9.2. Java代码编译和执行过程9.2.1. 什么是解释器(Interpreter)?什么是JIT编译器?9.2.2. 为什么Java是半编译半解释型语言?9.3. 机器码、指令、汇编语言9.3.1. 机器码9.3.2. 指令9.3.3. 指令集9.3.4. 汇编语言9.3.5. 高级语言9.3.6.转载 2021-06-24 19:52:36 · 83 阅读 · 0 评论 -
8. 对象实例化及直接内存
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)目录8. 对象实例化及直接内存8.1. 对象实例化8.1.1. 创建对象的方式8.1.2. 创建对象的步骤8.2. 对象内存布局8.2.1. 对象头(Header)8.2.2. 实例数据(Instance Data)8.2.3. 对齐填充(Padding)小结8.3. 对象的访问定位8.3.1. 句柄访问8.3.2. 直接指针(HotSpot采用)8.4. 直接内存(Dire转载 2021-06-24 18:20:29 · 172 阅读 · 0 评论 -
7. 方法区
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)目录7. 方法区7.1. 栈、堆、方法区的交互关系7.2. 方法区的理解7.2.1. 方法区在哪里?7.2.2. 方法区的基本理解7.2.3. HotSpot中方法区的演进7.3. 设置方法区大小与OOM7.3.1. 设置方法区内存的大小7.3.2. 如何解决这些OOM7.4. 方法区的内部结构7.4.1. 方法区(Method Area)存储什么?7.4.2. 方法区的内部结构转载 2021-06-22 22:22:09 · 155 阅读 · 0 评论 -
6. 堆空间
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)目录6. 堆6.1. 堆(Heap)的核心概述6.1.1. 堆内存细分6.1.2. 堆空间内部结构(JDK7)6.1.3. 堆空间内部结构(JDK8)6.2. 设置堆内存大小与OOM6.2.1. 堆空间大小的设置6.2.2. OutOfMemory举例6.3. 年轻代与老年代6.4. 图解对象分配过程6.5. Minor GC,MajorGC、Full GC6.5.1. ..转载 2021-06-21 22:03:43 · 208 阅读 · 0 评论 -
5. 本地方法接口和本地方法栈
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)5. 本地方法接口和本地方法栈5.1. 什么是本地方法?简单地讲,一个Native Method是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C中,你可以用extern "c" 告知c编译器去调用一个c的函数。A native method i...转载 2021-06-18 10:03:06 · 63 阅读 · 0 评论 -
4. 虚拟机栈
4. 虚拟机栈笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)目录4. 虚拟机栈4.1. 虚拟机栈概述4.1.1. 虚拟机栈出现的背景4.1.2. 初步印象4.1.3. 内存中的栈与堆4.1.4. 虚拟机栈基本内容4.2. 栈的存储单位4.2.1. 栈中存储什么?4.2.2. 栈运行原理4.2.3. 栈帧的内部结构4.3. 局部变量表(Local Variables)4.3.1. 关于Slot的理解4.3.2. Slo转载 2021-06-17 19:54:00 · 114 阅读 · 0 评论 -
3. 运行时数据区及程序计数器
3. 运行时数据区及程序计数器3.1. 运行时数据区3.1.1. 概述本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行JVM内存布局规定...转载 2021-06-17 19:26:44 · 102 阅读 · 0 评论 -
1. JVM与Java体系结构
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)来源同步更新:https://gitee.com/vectorx/NOTE_JVMhttps://codechina.csdn.net/qq_35925558/NOTE_JVMhttps://github.com/uxiahnan/NOTE_JVM1.JVM与Java体系结构1.1. 前言作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题?运行着的线上系统...转载 2021-06-17 19:11:59 · 123 阅读 · 0 评论 -
2. 类加载子系统
2. 类加载子系统2.1. 内存结构概述Class文件类加载子系统运行时数据区方法区堆程序计数器虚拟机栈本地方法栈执行引擎本地方法接口本地方法库如果自己想手写一个Java虚拟机的话,主要考虑哪些结构呢?类加载器执行引擎2.2. 类加载器与类的加载过程类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoad...转载 2021-06-17 16:44:26 · 109 阅读 · 0 评论