![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 93
JVM
知行合一。。。
这个作者很懒,什么都没留下…
展开
-
JVM调优--07---GC日志分析、纤程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录GC 日志分析把 GC 日志保存到文件-Xloggc:/path/to/gc.logGC 回收举例-Xms10m -Xmx10m -XX:+PrintGCDetailsGC 日志工具GCViewerGCEasyhttps://gceasy.io/GC 日志分析通过阅读 GC 日志,我们可以了解 Java 虚拟机内存分配与回收策略。 内存分配与垃圾回收的参数列表-XX:+PrintGC 输出 GC 日志。类似:-verbo原创 2021-12-11 11:13:23 · 872 阅读 · 0 评论 -
JVM调优--05---内存泄漏、案例分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录内存泄漏 概念何为内存泄漏 ?==只有对象不会再被程序用到了,但是GC又不能回收他们的情况,叫内存泄漏==内存泄漏与内存溢出的关系内存泄漏的分类java中----内存泄漏的8种情况1. 静态集合类2. 单例模式3. 内部类持有外部类4. 各种连接 ,如数据库连接,网络io连接等5. 变量不合理的作用域6. 改变的哈希值7. 缓存泄漏8. 监听器和回调内存泄漏----案例分析1. ThreadLocal提升--10---ThreadL原创 2021-12-05 23:09:45 · 526 阅读 · 0 评论 -
JVM调优--04---dump文件分析 、arthas在线排查工具
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录arthas在线排查工具arthas在线排查工具http://git.mashibing.com/bjmashibing/JVM/-/blob/master/05_GC%20and%20Tuning.md原创 2021-12-04 16:21:24 · 9597 阅读 · 0 评论 -
JVM调优--03---性能优化步骤、常用的jvm图形化界面
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录实际案例业务背景:1. 代码:2.设置参数java -Xms200M -Xmx200M -XX:+PrintGC T15_FullGC_Problem013.一般是运维团队首先受到报警信息(CPU Memory)4.top命令观察到问题:内存不断增长 CPU占用率居高不下5. top -Hp 观察进程中的线程,哪个线程CPU和内存占比高top -Hp 13646. jstack 定位线程状况jstack 1591实际案例业务背原创 2021-12-03 22:56:27 · 967 阅读 · 0 评论 -
JVM调优--02---JVM规划、预调优、案例
文章目录调优前的基础概念:**吞吐量**:用户代码时间 /(用户代码执行时间 + 垃圾回收时间)**响应时间**:STW越短,响应时间越好明确需求:场景:调优前的基础概念:吞吐量:用户代码时间 /(用户代码执行时间 + 垃圾回收时间)响应时间:STW越短,响应时间越好明确需求:所谓调优,首先确定,追求啥?吞吐量优先,还是响应时间优先?还是在满足一定的响应时间的情况下,要求达到多大的吞吐量…场景:科学计算,吞吐量。数据挖掘,thrput。吞吐量优先的一般:(PS + PO)响应原创 2021-11-29 19:43:55 · 449 阅读 · 0 评论 -
JVM调优--01---JVM常用命令行参数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录JVM常用命令行参数JVM常用命令行参数http://git.mashibing.com/bjmashibing/JVM/-/blob/master/05_GC%20and%20Tuning.md原创 2021-11-28 13:57:55 · 201 阅读 · 0 评论 -
JVM--19---垃圾回收器----CMS回收器、G1回收器、ZGC回收器
文章目录CMS 回收器:低延迟适用场景:CMS 的垃圾收集算法采用==标记-清除算法==,并且也会"Stop-The-World"CMS 老年代的收集器:CMS 垃圾回收过程:1. 初始标记(Initial-Mark)阶段:2. 并发标记(Concurrent-Mark)阶段:3. 重新标记(Remark)阶段:4.并发清除(Concurrent-Sweep)阶段:CMS 当堆内存使用率达到某一阈值时,便开始进行回收CMS 收集器的垃圾收集算法采用的是==标记-清除算法==CMS 为什么不使用标记整理(压缩原创 2021-11-14 16:30:43 · 1281 阅读 · 0 评论 -
JVM--18---垃圾回收器----Serial 回收器、ParNew回收器、 Parallel回收器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录GC分类与性能指标垃圾收集器分类1.按线程数分2. 按工作模式分3. 按碎片处理方式分4.按工作的内存区间分评估GC的性能指标GC分类与性能指标垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的 JVM 来实现。由于 JDK 的版本处于高速迭代过程中,因此 Java 发展至今已经衍生了众多的 GC 版本。从不同角度分析垃圾收集器,可以将 GC 分为不同的类型。垃圾收集器分类1.按线程数分按线程数分(原创 2021-11-13 15:11:36 · 1132 阅读 · 0 评论 -
JVM--17---垃圾回收相关概念
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录垃圾回收相关概念1. System.gc() 的理解System.gc()在默认情况下,通过 System.gc() 者 Runtime.getRuntime().gc() 的调用,会显式触发 ==Full GC==,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。代码演示是否出发GC操作调用 ==System.runFinalization(==) 会强制调用失去引用对象的 finalize()2. 内存溢出和内存泄原创 2021-11-06 00:01:13 · 201 阅读 · 0 评论 -
JVM--16---垃圾回收相关算法 2----清除阶段算法
文章目录垃圾回收相关算法垃圾回收相关算法标记阶段—-引用计数算法标记阶段—-可达性分析算法清除阶段—-标记-清除算法清除阶段—-复制算法清除阶段—-标记-整理算法分代收集算法增量收集算法分区算法...原创 2021-10-31 19:07:08 · 142 阅读 · 0 评论 -
JVM--15---垃圾回收相关算法 1---- 标记阶段算法、 finalization机制、MAT 与 JProfiler
文章目录垃圾回收相关算法标记阶段:引用计数算法定义:JVM 中究竟是如何标记一个死亡对象呢?当一个对象已经不再被任何的存活对象继续引用时,就可以宣判为已经死亡。引用计数算法----实现方式优点:缺点:循环引用小结Python 如何解决循环引用?标记阶段:可达性分析算法概念:实现方式:所谓 "GC Roots" ==根集合就是一组必须活跃的引用==。Java 中 GC Roots 可以是哪些?小技巧注意:垃圾回收相关算法标记阶段—-引用计数算法标记阶段—-可达性分析算法清除阶段—-标记-清除原创 2021-10-31 13:39:48 · 313 阅读 · 0 评论 -
JVM--14---垃圾回收----概述
文章目录JVM整体架构Java 和 C++ 语言的区别关于垃圾收集有三个经典问题:1. 什么是垃圾?垃圾是指==在运行程序中没有任何指针指向的对象==,这个对象就是需要被回收的垃圾。2. 为什么需要 GC?3. 早期垃圾回收Java 垃圾回收机制优点:Oracle 官网关于垃圾回收的介绍 [https://docs.oracle.com/javase/](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/toc.html)担原创 2021-10-30 16:27:32 · 123 阅读 · 0 评论 -
JVM--13---StringTable
文章目录StringTableString的基本特性API--05--String--特性JDK 9将字符存储在 ==char 数组==String的不可变性改成 this.str = "test ok";字符串常量池是,不会存储相同内容的字符串的String 的 String Pool 是一个固定大小的 HashtableString的内存分配==Java 8 元空间,字符串常量在堆==为什么 StringTable 从永久代调整到堆中String 的基本操作案例解析:字符串拼接操作1. 如果拼接符号的前原创 2021-10-24 22:04:43 · 82 阅读 · 0 评论 -
JVM--12---执行引擎----解释器、JIT 编译器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录执行引擎执行引擎原创 2021-10-23 22:20:24 · 498 阅读 · 0 评论 -
JVM--11---直接内存
文章目录直接内存直接内存原创 2021-10-20 23:50:35 · 316 阅读 · 1 评论 -
JVM--10-1---美团面试7问----解析Object 0 = new Object();
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录美团面试7问Object 0 = new Object();JVM--10--创建对象的步骤、对象实例化内存布局、访问定位问题1:解释一下对象的创建过程创建过程一、判断对象对应的类是否加载、链接、初始化二、为对象分配内存1. 如果内存规整:使用指针碰撞如果内存是规整的,那么虚拟机将采用的是指针碰撞法(Bump The Point)来为对象分配内存。2. 如果内存不规整:空闲列表分配如果内存不是规整的,已使用的内存和未使用的内存相原创 2021-11-27 18:30:51 · 1017 阅读 · 0 评论 -
JVM--10--创建对象的步骤、对象实例化内存布局、访问定位
文章目录对象实例化面试题对象创建方式1.new:2. 反射3. 使用 clone()4.使用反序列化5. 第三方库 Objenesis创建对象的步骤一、判断对象对应的类是否加载、链接、初始化二、为对象分配内存1. 如果内存规整:使用指针碰撞如果内存是规整的,那么虚拟机将采用的是指针碰撞法(Bump The Point)来为对象分配内存。2. 如果内存不规整:空闲列表分配如果内存不是规整的,已使用的内存和未使用的内存相互交错,那么虚拟机将采用的是空闲列表来为对象分配内存。三、处理并发问题四、属性的默认初始原创 2021-10-18 22:21:46 · 283 阅读 · 0 评论 -
JVM--09--方法区
文章目录方法区栈、堆、方法区的交互关系ThreadLocal:如何保证多个线程在并发环境下的安全性?典型应用就是数据库连接管理,以及会话管理栈、堆、方法区的交互关系方法区的理解所以,方法区看作是一块独立于 Java 堆的内存空间。==方法区主要存放的是 Class ,而堆中主要存放的是实例化的对象==HotSpot 中方法区的演进==JDK 1.8 后,元空间存放在堆外内存中.本地内存中==元空间(Metaspace)==JDK 1.8 后,元空间存放在堆外内存中.本地内存中==元空间与永久代区别:方法区是原创 2021-10-17 16:05:51 · 96 阅读 · 0 评论 -
JVM--08--堆2---TLAB、栈上分配之逃逸分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录堆空间分代思想堆空间分代思想。原创 2021-10-16 10:51:58 · 317 阅读 · 0 评论 -
JVM--07--堆1---简介、对象分配过程、GC
堆堆和方法区针对一个 JVM 进程来说是唯一的,也就是一个进程只有一个 JVM ,但是进程包含多个线程,他们是共享同一堆和方法区空间的,每个线程各自包含一套程序计数器、本地方法栈和虚拟机栈。一个进程 一个jvm 一个堆和方法区 一个Runtime实例Runtime每个Java应用程序都有一个类的实例RuntimeJava VisualVM下图就是使用:Java VisualVM 查看堆空间的内容,通过 jdk/bin提供的插件Java VisualVM 插件地址https://原创 2020-12-17 22:35:17 · 340 阅读 · 1 评论 -
JVM--06--本地方法接口、本地方法栈
本地方法接口什么是本地方法简单地讲,一个 Native Method 是一个 Java 调用非 Java 代码的接囗。一个 Native Method 是这样一个 Java 方法:该方法的实现由非 Java 语言实现,比如 C。这个特征并非 Java 所特有,很多其它的编程语言都有这一机制,比如在 C++ 中,你可以用 extern “c” 告知 C++ 编译器去调用一个 C 的函数。“A native method is a Java method whose implementation is p原创 2020-12-06 14:53:12 · 80 阅读 · 0 评论 -
JVM--05--虚拟机栈
虚拟机栈-概述原创 2020-12-06 12:30:30 · 195 阅读 · 0 评论 -
JVM--04--程序计数器
程序计数器(PC寄存器)介绍JVM 中的程序计数寄存器(Program Counter Register)中,Register 的命名源于 CPU 的寄存器,寄存器存储指令相关的现场信息。CPU 只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为 PC 计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM 中的 PC 寄存器是对物理 PC 寄存器的一种抽象模拟。JVM 中的程序计数器 并非是广义上所指的物理寄存器.翻译为 PC原创 2020-11-29 17:10:56 · 395 阅读 · 0 评论 -
JVM--03--运行时数据区概述及线程
运行时数据区-概述原创 2020-11-29 14:55:32 · 103 阅读 · 0 评论 -
JVM--02--类加载子系统
JVM–02–类加载子系统原创 2020-11-29 11:10:34 · 163 阅读 · 0 评论 -
JVM--01--Java体系结构
JVM 与 Java 体系结构前言作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题?运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM!想解决线上JVM GC问题,但却无从下手。新项目上线,对各种JVM参数设置一脸茫然,直接默认吧然后就JJ了每次面试之前都要重新背一遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优VM参数,如何解决GC、OOM等问题,一脸懵逼。大部分Java开发人员,除会在项目中使用到与Java平台相关的各种高精尖技术,对于Java原创 2020-11-27 23:14:41 · 175 阅读 · 0 评论