自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 十三、JVM调优工具及案例分析

1、Jmap、Jstack、Jinfo详解 2、JvisualVM调优工具实战 3、JVM内存或CPU飙高如何定位 4、JSta令预估JVM运行情况 5、系统频繁FULL GC导致系统卡顿实战调优 6、内存泄露到底是怎么回事?

2022-09-25 22:09:14 3538 2

原创 十二、G1垃圾收集器

并行与并发:G1能充分利用CPU、多核环境下的硬件优势,使用多个CPU(CPU或者CPU核心)来缩短Stop-The-World停顿时间。部分其他收集器原本需要停顿Java线程来执行GC动作,G1收集器仍然可以通过并发的方式让java程序继续执行。分代收集:虽然G1可以不需要其他收集器配合就能独立管理整个GC堆,但是还是保留了分代的概念。空间整合:与CMS的“标记--清理”算法不同,G1从整体来看是基于“标记整理”算法实现的收集器,从局部上来看是基于“复制算法”实现的。可预测的停顿。

2022-09-15 16:40:17 2799

原创 十一、垃圾收集底层算法 - - 三色标记详解

CMS垃圾收集算法使用了三色标记,我们以CMS垃圾收集为例来说明。CMS垃圾收集的流程如下:一共有5步:初始标记、并发标记、重新标记、并发清除(包括:并发清除、线程重置)。其中初始标记和重新标记都会STW。在并发标记的过程中,因为标记期间应用线程还在继续跑,对象间的引用可能发生变化,多标和漏标的情况有可能发生。

2022-09-08 00:08:52 1033

原创 十、亿级流量电商系统JVM模型参数二次优化

通过上面的数据分析,我们要养成一个习惯,做任何事情都是要有理有据,不能是拍脑袋就说出来的。一定要能够经得起验证的。

2022-09-03 18:16:32 538

原创 九、系统分析垃圾收集器

CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。它在垃圾收集时使得用户线程和GC线程并发执行,因此在垃圾收集过程中用户也不会感到明显的卡顿。是基于多线程的“标记-清除”算法。CMS非常符合在注重用户体验的应用上使用,它是HotSpot虚拟机第一款真正意义上的并发收集器,它第一次实现了让垃圾收集线程与用户线程(基本上)同时工作。

2022-09-03 16:41:02 158

转载 八、亿级流量电商系统JVM模型参数预估方案

大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢?假设,现在有一个场景,一个电商平台,比如京东,需要承担每天上亿的流量。现在开发了一个订单系统,那么这个订单系统每秒的并发量是多少呢?我们应该如何分配其内存空间呢?先来分析一下?每日亿级流量,平均一个用户点击量在20~30左右,通过这个计算出日活用户数约1亿/20=500万,看的人多,买的人少,通常下单率不超过10%,我们按照留存率10%来计算,日均订单约50万单。...

2022-08-31 22:31:36 230

原创 七、JVM内存分配机制超详细解析

那么什么是逃逸分析呢?要知道逃逸分析,先要知道什么是逃逸?我们来看一个例子user.setName("张三");}user.setName("李四");}}Test类里面有两个方法,test1()方法user对象,并且返回了user,返回回去的对象肯定是要被外部使用的。这种情况就是user对象的逃逸出了test1()方法。而test2()方法也是构建了user对象,但是这个对象仅仅是在test2()方法的内部有效,不会再方法外部使用,这种就是user对象没有逃逸。标量替换。...

2022-08-01 19:30:03 1990 1

原创 六、JVM调优 - 方法区、堆、栈调优详解

通常我们都知道在堆空间新生代Eden区满了,会触发minor GC,在老年代满了会触发full GC,触发Full GC会导致 Stop The World,那你们知道还有一个区域满了一定会触发Full GC么?而且这个区域满了,会直接影响我们的开发效率。我们可以对运行时数据区的内存进行参数设置。这是JVM调优的重点,参数的变化将影响整体效率 核心参数设置如下: 这是一个通用的设置。途中具体含义如下:下面主要研究方法区参数设置 在jdk8之前有个区域叫做永久代,在JDK8及以后改名字了,叫做元空间。这块内

2022-07-07 22:10:08 949

原创 五、堆和GC介绍

《深入理解java虚拟机》是怎么描述java堆的在讲垃圾回收方式前,我们需要知道如何确定视为垃圾和怎么回收垃圾? 对象如果没有任何与之关联的引用,即他们的引用计数都为0,则说明对象不太可能再被用到,那么这个对象就是可回收对象。 举个例子: 然后将m设置为null,这时候“jack”的引用次数就等于0了,在引用计数算法中,意味着这块内容就需要被回收了。 看似很美好,但是我们知道JVM的垃圾回收就是“Stop-The-World”的,那么是什么原因导致我们放弃了引用计数算法呢?如下例

2022-07-07 18:16:28 564

原创 四、JVM指令手册

栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入操作数栈iconst_2 将int类型常量2压入栈iconst_3 将int类型常量3压入栈iconst_4 将int类型常量4压入栈iconst_5 将int类型常量5压入栈lconst_0 将long类型常量0压入栈lconst_1 将long类型常量1压入栈fconst_

2022-07-05 00:10:16 187

原创 三、Java内存模型详细解析

我们经常说到JVM调优,JVM和JDK到底是什么关系?这幅图很重要,一定要了解其结构。这是JDK的结构图,从结构上可以看出java结构体系,JDK主要包含两部分:第一部分:是java工具(Tools&Tool APIs)比如java,javac,javap等命令。我们常用的命令都在这里第二部分:JRE(全称:Java Runtime Enveriment),JRE是Java的核心jre里面定义 了java运行时需要的核心类库,比如:我们常用的lang包,util包,Math包,Collection包等等。这

2022-07-05 00:04:42 3257

原创 二、Tomcat打破双亲委派机制

首先我们思考一下:Tomcat是一个web容器,那么它要解决什么问题? 1)、一个web容器可能需要部署两个应用程序,不同的应用程序可能会依赖同一个第三方类库的不同版本,不能要求同一个类库在同一个服务器只有一份,因此要保证每个应用程序的类库都是独立的,保证相互隔离。 2)、部署在同一个web容器中相同的类库相同的版本可以共享。否则如果服务器有10个应用程序,那么要有10份相同的类库加载器进虚拟机。 3)、web容器也有自己依赖的类库,不能与应用程序的类库混淆。基于安

2022-07-01 17:32:31 4671 1

原创 一、类加载机制深度解析

第一步:java调用底层的jvm.dll文件创建java虚拟机(这一步由C++实现),这里java.exe是c++写的代码,调用jvm.dll也是c++底层的一个函数,通过调用jvm.dll文件(dll文件相当于java的jar包),会创建java虚拟机,java虚拟机的启动都是c++程序实现的。第二步:在启动虚拟机的过程中,会创建一个引导类加载器的实例,这个引导类的加载器是C语言实现的,然后jvm虚拟机就启动起来了。第三步:接下类,c++会调用java的启动程序,刚刚只是创建了java虚拟机,...

2022-06-25 20:40:08 1021 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除