随笔分类 -  JVM虚拟机

摘要:分析JVM性能,肯定要看GC日志,那么GC日志中各个参数都代表什么含义呢?祥看下文。 日志导出来以后,用肉眼看,太费劲了,来看看有什么好用的工具对GC日志进行分析。不管能分析,还有推荐解决方案哦。 一、GC日志 我们在打印日志的时候,增加下面的参数,可以打印更加详细的日志 1. 日志命令解析 ‐Xl 阅读全文
posted @ 2022-01-12 16:02 盛开的太阳 阅读(4131) 评论(2) 推荐(3) 编辑
摘要:Arthas线上 分析诊断调优工具 以前我们要排查线上问题,通常使用的是jdk自带的调优工具和命令。最常见的就是dump线上日志,然后下载到本地,导入到jvisualvm工具中。这样操作有诸多不变,现在阿里团队开发的Arhtas工具,拥有非常强大的功能,并且都是线上的刚需,尤其是情况紧急,不方便立刻 阅读全文
posted @ 2022-01-10 17:57 盛开的太阳 阅读(2078) 评论(0) 推荐(6) 编辑
摘要:在面试的时候经常稳的JVM调优问题 线上环境,如果内存飙升了,应该怎么排查呢? 线上环境,如果CPU飙升了,应该怎么排查呢? 内存飙升首先要考虑是不是类有很多,并且没有被释放;使用jmap可以检查出哪个类很多 CPU飙升,可以使用Jstact 来找出CPU飙升的原因 下面就来研究Jmap,Jstac 阅读全文
posted @ 2021-11-17 20:19 盛开的太阳 阅读(1290) 评论(0) 推荐(1) 编辑
摘要:mac安装homebrew 在mac上安装软件,都会用到homebrew,第一次安装,有很多坑,这里记录一下 homebrew是国外源,安装特别慢,切不容易装好 》使用国内源 安装wget软件报错 wget: Failed to download resource "gettext" Downloa 阅读全文
posted @ 2021-11-11 10:36 盛开的太阳 阅读(1979) 评论(0) 推荐(0) 编辑
摘要:彻底解决Jmap在mac版本无法使用的问题 看了网上很多帖子,都说一半,说的都是大家说过的,根本没有解决问题。说jdk8不行,换成jdk9或者jdk11,我都试了,还是不行,最后说是mac的问题。换成linux,崩溃!!! 一、在mac运行Jmap的问题 1. 我们运行jps查询刚刚启动的项目 然后 阅读全文
posted @ 2021-11-09 14:11 盛开的太阳 阅读(2585) 评论(0) 推荐(0) 编辑
摘要:一、jdk下载地址 jdk官网下载地址:http://jdk.java.net/archive/ 二、安装jdk Mac的JDK都是安装到一个指定目录的:/Library/Java/JavaVirtualMachines/,因此可以在这个目录下查看自己安装的所以JDK。 ​ 三、配置环境变量 接下来 阅读全文
posted @ 2021-11-09 10:03 盛开的太阳 阅读(991) 评论(0) 推荐(0) 编辑
摘要:一、ZGC概要 1.1 ZGC研究资料 这块要详细拿出来说一下。 ZGC官网介绍:https://wiki.openjdk.java.net/display/zgc/Main ZGC文档(pdf,讲解详细):http://cr.openjdk.java.net/~pliden/slides/ZGC- 阅读全文
posted @ 2021-11-08 14:48 盛开的太阳 阅读(355) 评论(0) 推荐(0) 编辑
摘要:G1收集器是一款面向服务器的垃圾收集器,也是HotSpot在JVM上力推的垃圾收集器,并赋予取代CMS的使命。为什么对G1收集器给予如此高的期望呢?既然对G1收集器寄予了如此高的期望,那么他一定是有其特别之处。他和其他的垃圾收集器有何不同呢?下面我们将从以下几个方面研究G1收集器。 一、 为什么会诞 阅读全文
posted @ 2021-11-05 19:36 盛开的太阳 阅读(1342) 评论(0) 推荐(1) 编辑
摘要:垃圾收集底层算法--三色标记详解 一、并发标记的问题 CMS垃圾收集算法使用了三色标记,我们以CMS垃圾收集为例来说明。CMS垃圾收集的流程如下: 一共有5步:初始标记、并发标记、重新标记、并发清除(包括:并发清理、线程重置)。其中初始标记和重新标记都会Stop The World。在并发标记的过程 阅读全文
posted @ 2021-11-04 10:34 盛开的太阳 阅读(1125) 评论(0) 推荐(1) 编辑
摘要:亿级流量电商系统JVM模型参数预估方案,在原来的基础上采用ParNew+CMS垃圾收集器 一、亿级流量分析及jvm参数设置 1. 需求分析 大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢? 假设,现在有一个场景,一个电商平台,比如 阅读全文
posted @ 2021-10-24 09:14 盛开的太阳 阅读(443) 评论(2) 推荐(1) 编辑
摘要:一、垃圾收集算法 垃圾收集常用的算法有三种。标记-清除算法,标记-复制算法,标记-整理算法。下面一个一个来看: 1.1标记清除算法 标记清除算法分为“标记”和“清除”两个阶段:标记存活的对象, 统一回收所有未被标记的对象(一般选择这种);也可以反过来,标 记出所有需要回收的对象,在标记完成后统一回收 阅读全文
posted @ 2021-10-21 11:20 盛开的太阳 阅读(437) 评论(0) 推荐(1) 编辑
摘要:1. 需求分析 大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢? 假设,现在有一个场景,一个电商平台,比如京东,需要承担每天上亿的流量。现在开发了一个订单系统,那么这个订单系统每秒的并发量是多少呢?我们应该如何分配其内存空间呢?先 阅读全文
posted @ 2021-10-14 15:00 盛开的太阳 阅读(1263) 评论(0) 推荐(2) 编辑
摘要:一、对象的加载过程 之前研究过类的加载过程。具体详情可查看文章:https://www.cnblogs.com/ITPower/p/15356099.html 那么,当一个对象被new的时候,是如何加载的呢?有哪些步骤,如何分配内存空间的呢? 1.1 对象创建的主要流程 还是这段代码为例说明: pu 阅读全文
posted @ 2021-10-13 10:35 盛开的太阳 阅读(2761) 评论(2) 推荐(5) 编辑
摘要:通常我们都知道在堆空间新生代Eden区满了,会触发minor GC, 在老年代满了会触发full GC, 触发full GC会导致Stop The World, 那你们知道还有一个区域满了一会触发Full GC么?而且这个区域满了会直接影响我们的开发效率。 一、方法区参数调优 我们可以对运行时数据区 阅读全文
posted @ 2021-10-11 09:25 盛开的太阳 阅读(630) 评论(2) 推荐(0) 编辑
摘要:一. 堆和GC介绍 1.java堆的特点 《深入理解java虚拟机》是怎么描述java堆的 Java堆(Java Heap)是java虚拟机所管理的内存中最大的一块 java堆被所有线程共享的一块内存区域 虚拟机启动时创建java堆 java堆的唯一目的就是存放对象实例。 java堆是垃圾收集器管理 阅读全文
posted @ 2021-10-09 10:56 盛开的太阳 阅读(599) 评论(0) 推荐(1) 编辑
摘要:一. java结构体系 Description of Java Conceptual Diagram(java结构) 我们经常说到JVM调优,JVM和JDK到底什么关系,大家知道么?这是java基础。 这幅图很重要,一定要了解其结构。这是jdk的结构图。从结构上可以看出java结构体系, JDK主要 阅读全文
posted @ 2021-10-08 17:46 盛开的太阳 阅读(958) 评论(1) 推荐(1) 编辑
摘要:了解了类加载器的双亲委派机制, 也知道了双亲委派机制的原理,接下来就是检验我们学习是否扎实了,来自定义一个类加载器 一. 回顾类加载器的原理 还是这张图,类加载器的入口是c++调用java代码创建了JVM启动器,其中的一个启动器是sun.misc.Launcher启动器。这个启动器启动并加载的App 阅读全文
posted @ 2021-10-07 08:17 盛开的太阳 阅读(1414) 评论(1) 推荐(3) 编辑
摘要:手把手叫你写类加载器。 了解了类加载器的双亲委派机制, 也知道了双亲委派机制的原理,接下来就是检验我们学习是否扎实了,来自定义一个类加载器 一. 回顾类加载器的原理 还是这张图,类加载器的入口是c++调用java代码创建了JVM启动器,其中的一个启动器是sun.misc.Launcher启动器。这个 阅读全文
posted @ 2021-10-04 09:12 盛开的太阳 阅读(886) 评论(0) 推荐(1) 编辑
摘要:写在前面的话:为什么要研究类加载的过程?为什么要研究双亲委派机制? 研究类加载的过程就是要知道类加载的时候使用了双亲委派机制。但仅仅知道双亲委派机制不是目的,目的是要了解为什么要使用双亲委派机制,他的原理是什么?知道双亲委派机制的逻辑思想,然后这个思想是否可以被我们借鉴,为我所用。这才是学习知识的目 阅读全文
posted @ 2021-10-03 08:39 盛开的太阳 阅读(6013) 评论(1) 推荐(1) 编辑
摘要:运行环境: 下面说明一下我的运行环境。我是在mac上操作的. 先找到mac的java地址. 从~/.bash_profile中可以看到 java的home目录是: /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home 一. 阅读全文
posted @ 2021-09-30 11:58 盛开的太阳 阅读(1143) 评论(3) 推荐(2) 编辑