其他分享
首页 > 其他分享> > JVM性能调优与实战进阶篇-上

JVM性能调优与实战进阶篇-上

作者:互联网

ZGC

诞生原因

Java生态非常强大,但还不够,有些场景仍处于劣势,而ZGC的出现可以让Java语言抢占其他语言的某些特定领域市场。比如

特性

内存布局

ZGC采用堆空间分页模型的机制,堆空间分页模型也非常符合Linux Kernel2.6引入的标准大页(huge page)如4KB的处理方式。本质与G1一样,没有分代的概念,ZGC也采用基于Region的堆内存布局,不一样的是ZGC的Region具有动态性:动态创建销毁、动态容量大小。ZGC一共分为三种Region:

image-20220227134728097

image-20220227123743039

指针着色技术(Color Pointers)

image-20220227124515793

一段C程序mapping.c看下ZGC的64位虚拟地址空间的指针着色技术展示

image-20220227125500950

编译执行,三个地址一样,也即是同一个实地址映射到3个虚地址。

image-20220227125701554

整体流程

概述

主要分为两步

image-20220227130147942

image-20220227133154167

垃圾标记

垃圾标记算法采用可达性分析算法

image-20220227130457115

标记阶段,对象分配(Remapped)

标记结束后Remapped对象即为垃圾对象。而下次标记使用M1表示活跃。

image-20220227132624080

ZGC转移

JVM调优概述

背景

调优概述

调优目标

JVM调优目标是使用较小的内存占用来获得较高的吞吐量或者较低的延迟,从这里也可以知道其重要指标有三个:

从上面我们也知道这三者如同分布式CAP理论一样不可完全兼得,对于一个Java程序同时保证内存占用小、延迟低、高吞吐量是不可能的;任何一个指标性能的提高,几乎都是以牺牲其他指标性能的损为代价的,不可兼得。程序的目标不同,调优时所考虑的方向也不同,因此需要结合实际场景,有明确的优化目标,找到性能瓶颈,对瓶颈有针对性的优化。

调优原则

调优步骤

性能评价/测试指标

JVM监控及诊断命令行工具

无监控、不调优!命令行安装 jdk 的 bin 目录,这些工具用来获取目标 JVM 不同方面、不同层次的信息,帮助开发人员很好地解决 Java 应用程序的一些疑难杂症。

JVM监控及诊断工具GUI

前面我们学习Arthas也是一种JVM监控及诊断工具GUI,本篇先抛出影子,后续在单独针对

此外针对JVM运行时参数和分析GC日志再单独增加专题文档

**本人博客网站 **IT小神 www.itxiaoshen.com

标签:Java,虚拟机,进阶篇,调优,GC,内存,JVM,线程
来源: https://www.cnblogs.com/itxiaoshen/p/15944001.html