JVM-GC-常用调优命令和GC参数

news2024/11/25 16:17:29

定位问题常用命令

  1. top:查看内存/CPU占用情况
  2. top -Hp pid: 查看进程内线程情况
  3. jsp:查看java进程情况
  4. jstack 线程pid:查看进程内线程信息,一般查看线程状态,判断是否死锁。重点观察:WAITING、BLOCKED的线程,另外查看waiting on xxx,如果多个线程都在waiting on 某把锁,看哪个线程持有这把锁;
  5. jstat -gc:查看GC情况
  6. jinfo 线程pid:查看线程信息
  7. jstat -gc 线程pid 间隔时间:查看
  8. jmap -histo 线程pid | head 20:查看那些对象多,用于定位OOM问题;
  9. jmap -dump:format=b,file=xxx pid:导出堆栈信息,消耗性能,生产环境慎用;

JVM调优常用工具

  1. jconsole:JDK自带,消耗性能,线上排查慎用;
  2. arthas:推荐使用,线上排查;

GC常用参数

  1. -Xmn/-Xms/-Xmx/-Xss:年轻代/最小堆/最大堆/栈空间大小
  2. -XX:+PrintVMOptions:打印JVM运行参数
  3. -XX:+PrintFlagsFinal:打印JVM最终参数,配合管道符搜索命令 如:-XX:+PrintFlagsFinal | CMS
  4. -XX:+PrintFlagsInitial:打印JVM默认参数
  5. -XX:MaxTenuringThreshold:升代年龄,两位存储,最大15
  6. -XX:+PrintGC
  7. -XX:+PrintGCDetails
  8. -XX:+PrintHeapAtGC
  9. -XX:+PrintGCTimeStamps
  10. -XX:+UseTLAB:使用TLAB,默认打开
  11. -XX:+PrintTLAB:打印TLAB情况
  12. -XX:TLABSize:TLAB大小
  13. -XX:DisableExplictGC:禁用System.gc()
  14. -XX:+PrintGCApplicationConcurrentTime:打印应用程序时间
  15. -XX:+PrintGCApplicationStoppedTime:打印暂停时间
  16. -XX:+PrintReferenceGC:记录回收了多少种不同引用对象
  17. -verbose:class:类加载详细过程

Parallel常用参数

  1. -XX:SurvivorRatio:
  2. -XX:PreTenureSizeThreshold:设置大对象大小,指定之间分配到Old区对象大小
  3. -XX:MaxTenuringThreshold:升代年龄,两位存储,最大15
  4. -XX:+ParallelGCThreads:并发收集器线程数,同样适用CMS,一般和CPU核数相同
  5. -XX:+UseAdaptiveSizePolicy:自动选择各区大小比例

CMS常用参数

  1. -XX:ParallelCMSThreads:设置CMS线程数
  2. -XX:CMSInitiatingOccupancyFraction:使用多少老年代空间比例后开始CMS回收,默认68%
  3. -XX:+UseCMSCompactAtFullCollection:在FGC时进行压缩
  4. -XX:CMSFullGCsBeforeCompaction:在多少次FGC后进行压缩
  5. -XX:+CMSClassUnloadingEnabled:回收没用的class,永久代回收
  6. -XX:CMSInitiatingPermOccupancyFraction:永久代达到这个比例后触发CMS
  7. -XX:GCTimeRatio:设置GC时间占用程序时间百分比
  8. -XX:MaxGCPauseMillis:停顿时间,是一个建议时间。

G1常用参数

  1. -XX:+UseG1GC:使用G1
  2. -XX:MaxGCPauseMillis:停顿时间,是一个建议时间。G1通过减少young区块数 达到这个值
  3. -XX:+G1HeapRegionSize:设置分区大小,只能设置1、2、4、8、16、32;值越大垃圾存活时间越长,间隔越长,回收时间越长
  4. -XX:G1NewSizePercent:新生代最小比例,默认为5%
  5. -XX:G1MaxNewSizePercent:新生代最大比例,默认60%
  6. -XX:GCTimeRatio:GC时间建议比例,G1会根据这个值调整堆空间
  7. -XX:ConcGCThreads:GC线程数量
  8. -XX:InitiatingHeapOccupancyPercent:启动G1的堆空间占比例

GC日志(PS+PO)

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1833705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】网络安全威胁及途径

1、网络安全威胁的种类及途径 (1)网络安全威胁的主要类型 网络安全面临的威胁和隐患种类繁多,主要包括人为因素、网络系统及数据资源和运行环境等影响。网络安全威胁主要表现为:黑客入侵、非授权访问、窃听、假冒合法用户、病毒…

【读博日记】拓扑结构(待修正)

Topology 拓扑学 内容来源于互联网,还在甄别中——20240617 拓扑结构指把实体抽象成与其形状大小无关的点,把连接实体的线路抽象成线,再研究这些电线之间的关系。 所谓相似的拓扑结构: 例如一个圆环变成正方形、长方形、三角形…

基 CanMV 的 C 开发环境搭建

不论是使用 CanMV 提供的基于 C 语言和 FreeRTOS 的应用开发方式开发应用程序或是编译 CanMV 固件,都需要搭建基于 CanMV 的 C 开发环境,用于编译 CanMV 源码。 1. 开发环境搭建说明 CanMV 提供了基于 C 语言和 FreeRTOS 的应用开发…

读AI新生:破解人机共存密码笔记04计算的极限

1. 计算的极限 1.1. 光靠速度是无法给我们带来人工智能的 1.1.1. 在速度更快的计算机上运行糟糕的算法并不会使算法变得更优秀,这只意味着你会更快地得到错误的答案 1.1.2. 数据越多,错误答案出现的机会就越大 1.…

EE trade:现货黄金杠杆比例的计算方法

现货黄金杠杆交易是一种利用保证金进行交易的方式,允许投资者用较少的资金控制较大的交易量,从而放大收益或损失。杠杆比例的计算方法相对简单,主要取决于交易所需的保证金和实际交易金额之间的关系。 杠杆比例的计算公式 杠杆比例 实际交…

使用插件永久解决IDEA使用Shift+F10失效问题(不需要换老版本输入法)

在日常编程中,使用快捷键可以大大提高开发效率。然而,有时候我们会遇到IDEA 中,ShiftF10 快捷键失效。这个蛋疼的问题现在终于可以得到解决,上个月在逛V2EX的时候看见一位大佬做的插件。 大佬链接:https://www.v2ex.c…

物联网技术-第4章物联网通信技术-4.1计算机网络

目录 1.1计算机网络拓扑与组成 (1)全连通式网络 (2)星型网 (3)环形网 (4)总线网 (5)不规则型网 1.2数据交换类型 (1)电路交换网 &…

STM32单片机DMA存储器详解

文章目录 1. DMA概述 2. 存储器映像 3. DMA框架图 4. DMA请求 5. 数据宽度与对齐 6. DMA数据转运 7. ADC扫描模式和DMA 8. 代码示例 1. DMA概述 DMA(Direct Memory Access)可以直接访问STM32内部的存储器,DMA是一种技术,…

C++ | Leetcode C++题解之第162题寻找峰值

题目&#xff1a; 题解&#xff1a; class Solution { public:int findPeakElement(vector<int>& nums) {int n nums.size();// 辅助函数&#xff0c;输入下标 i&#xff0c;返回一个二元组 (0/1, nums[i])// 方便处理 nums[-1] 以及 nums[n] 的边界情况auto get …

【漏洞复现】泛微OA E-Cology ln.FileDownload 任意文件读取漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

Debian12的#!bash #!/bin/bash #!/bin/env bash #!/usr/bin/bash #!/usr/bin/env bash

bash脚本开头可写成 #!/bin/bash , #!/bin/env bash , #!/usr/bin/bash , #!/usr/bin/env bash #!/bin/bash , #!/usr/bin/bash#!/bin/env bash , #!/usr/bin/env bash Debian12的 /bin 是 /usr/bin 的软链接, /sbin 是 /usr/sbin 的软链接, (Debian12默认没有ll命令,用的ls …

网络安全:数据库安全性

文章目录 网络安全&#xff1a;数据库安全性引言数据库安全性的重要性常见的数据库安全威胁数据库安全性的最佳实践数据加密访问控制审计和监控 结语 网络安全&#xff1a;数据库安全性 引言 在前两篇文章中&#xff0c;我们讨论了SQL注入的概念和防范措施。本篇文章将聚焦于…

5216万!国内自动化巨头,拟剥离旗下子业务

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 近日&#xff0c;中控技术发布公告称&#xff0c;为进一步优化资产结构和产业布局&#xff0c;提升公司核心竞争力&#xff0c;公司拟将其全资子…

Python | Leetcode Python题解之第162题寻找峰值

题目&#xff1a; 题解&#xff1a; class Solution:def findPeakElement(self, nums: List[int]) -> int:n len(nums)# 辅助函数&#xff0c;输入下标 i&#xff0c;返回 nums[i] 的值# 方便处理 nums[-1] 以及 nums[n] 的边界情况def get(i: int) -> int:if i -1 or…

canvas实现画布拖拽效果 适配Uniapp和Vue (开箱即用)

需求:我司是做AIGC项目最近和地铁项目有关需要实现海报效果图&#xff0c;并且需要使用画布拖拽和修改上传删除等等功能 当时连续加班花了10个工作日搓出来 实现挺简单的但是Canvas数据处理还是挺麻烦的 大概功能如图下 首先我们需要引入Fabric.js 这个库封装好了原生的Canva…

如何实现element表格合并行?

前两天我一个朋友咨询我element表格合并行的问题,他研究了很久,已经开始怀疑是不是element UI出现了bug,然后跟我一阵沟通,最终解决了问题,他的问题在于他把事情想复杂了,接下来我们一起来看一下这个经典“案例”,很多人真的很有可能走入这个误区,当然老鸟就不用看了,…

Pyqt QCustomPlot 简介、安装与实用代码示例(二)

目录 前言实用代码示例彩色图演示散点像素图演示实时数据演示多轴演示对数轴演示 结语 所有文章除特别声明外&#xff0c;均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 nixgnauhcuy’s blog&#xff01; 如需转载&#xff0c;请标明出处&#xff01; 完整代码我已经上传到…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 内存访问热度分析(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

《EDA技术》十六选一数据选择器实验报告

摘 要&#xff1a; 本实验通过Quartus软件完成对十六选一数据选择器的四种VHDL程序&#xff0c;分别为if;case;when else;when select四种方式&#xff0c;实现波形图的生成。同时&#xff0c;加深对VHDL语言的理解和使用多种方式完成任务的能力&#xff0c;提高实验操作能力。…

[WTL/Win32]_[中级]_[MVP架构在实际项目中应用的地方]

场景 在开发Windows和macOS的界面软件时&#xff0c;Windows用的是WTL/Win32技术&#xff0c;而macOS用的是Cocoa技术。而两种技术的本地语言一个主打是C,另一个却是Object-c。界面软件的源码随着项目功能增多而增多&#xff0c;这就会给同步Windows和macOS的功能造成很大负担…