JVM(七、性能监控、故障处理工具)

server/2024/11/26 13:55:12/

Java与C++之间有一堵由内存动态分配和垃圾回收技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。

Java内存管理和垃圾回收全部由虚拟机管理,一旦出现问题,我们需要一些工具去排查错误、修正问题。

1、基础故障处理工具

1.1:jps

虚拟机进程状况工具 

 

4.2:jstat

虚拟机统计信息监视工具:jstat是用于监视虚拟机各种运行状态信息的命令行工具。可以显示本地或远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据。

4.3:jinfo

java配置信息工具:jinfo的作用时实时查看和调整虚拟机参数

4.4:jmap

Java内存映像工具:jmap命令用于生成堆转储快照 

4.5:jhat

搭配jamp使用,分析jmap生成的dump文件

4.6:jstack

 jstack命令用于生成虚拟机当前时刻的线程快照

2、JVM常见参数设置

2.1:内存设置

参数

  • -Xms:初始堆大小,JVM 启动的时候,给定堆空间大小。
  • -Xmx:最大堆大小,如果初始堆空间不足的时候,最大可以扩展到多少。
  • -Xmn:设置年轻代大小。整个堆大小 = 年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为 64M,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun 官方推荐配置为整个堆的 3/8。
  • -Xss: 设置每个线程的 Java 栈大小。JDK 5 后每个线程 Java 栈大小为 1M。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在 3000~5000 左右。
  • -XX:NewRatio=n:设置年轻代和年老代的比值。如为 3,表示年轻代与年老代比值为 1:3。
  • -XX:MaxTenuringThreshold:设置垃圾最大年龄。如果设置为 0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。对于年老代比较多的应用(即 Minor GC 过后有大量对象存活的应用),可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在 Survivor 区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。

设置经验

  • 开发过程的测试应用,要求物理内存大于 4G

     -Xmx3550m-Xms3550m -Xmn2g-Xss128k
    
  • 高并发本地测试使用,大对象相对较多(如 IO 流)

     Xmx3550m-Xms3550m-Xss128k-XX:NewRatio=4-XX:SurvivorRatio=4-XX:MaxPermSize=160m-XX:MaxTenuringThreshold=0
    
  • 环境: 16G 物理内存,高并发服务,重量级对象中等(线程池,连接池等),常用对象比例为 40%(即运行过程中产生的对象 40% 是生命周期较长的)

     -Xmx10G-Xms10G-Xss1M-XX:NewRatio=3-XX:SurvivorRatio=4 -XX:MaxPermSize=2048m-XX:MaxTenuringThreshold=5

2.2:收集器设置

参数

  • 收集器设置
    • -XX:+UseSerialGC:设置串行收集器,年轻带收集器。
    • -XX:+UseParallelGC:设置并行收集器。
    • -XX:+UseParNewGC:设置年轻代为并行收集。可与 CMS 收集同时使用。JDK 5.0 以上,JVM 会根据系统配置自行设置,所以无需再设置此值。
    • -XX:+UseParallelOldGC:设置并行年老代收集器,JDK6.0 支持对年老代并行收集。
    • -XX:+UseConcMarkSweepGC:设置年老代并发收集器,测试中配置这个以后,-XX:NewRatio 的配置失效,原因不明。所以,此时年轻代大小最好用 -Xmn 设置。
    • -XX:+UseG1GC:设置 G1 收集器。
  • 并行收集器参数设置
    • -XX:ParallelGCThreads=n:设置并行收集器收集时最大线程数使用的 CPU 数。并行收集线程数。
    • -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间,单位毫秒。
    • -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。
    • -XX:+UseAdaptiveSizePolicy:设置此选项后,并行收集器会自动选择年轻代区大小和相应的 Survivor 区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开。
    • -XX:CMSFullGCsBeforeCompaction=n:由于 CMS 不对内存空间进行压缩、整理,所以运行一段时间以后会产生"碎片",使得运行效率降低。此值设置运行多少次 GC 以后对内存空间进行压缩、整理。
    • -XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片。

 


http://www.ppmy.cn/server/145077.html

相关文章

Vue 过滤器究竟是什么?应用场景与实例全展示

Vue中的过滤器概述 **Vue过滤器(Filters)**是Vue.js提供的一个功能,用于对数据进行格式化。它可以在模板插值和v-bind指令中使用,帮助开发者对数据进行展示前的处理。Vue过滤器常用于处理字符串格式、日期格式、货币格式等需求,尤其在模板中直接使用时,可以提高代码的可…

硬件基础22 反馈放大电路

目录 一、反馈的基本概念与分类 1、什么是反馈 2、直流反馈与交流反馈 3、正反馈与负反馈 4、串联反馈与并联反馈 5、电压反馈与电流反馈 二、负反馈四种组态 1、电压串联负反馈放大电路 2、电压并联负反馈放大电路 3、电流串联负反馈放大电路 4、电流并联负反馈放大…

【小白学机器学习33】 大数定律python的 pandas.Dataframe 和 pandas.Series基础内容

目录 0 总结 0.1pd.Dataframe有一个比较麻烦琐碎的地方,就是引号 和括号 0.2 pd.Dataframe关于括号的原则 0.3 分清楚几个数据类型和对应的方法的范围 0.4 几个数据结构的构造关系 list → np.array(list) → pd.Series(np.array)/pd.Dataframe 1 python 里…

CVE-2022-4230

打开什么都没有 使用dirsearch扫描到一个wp-admin 访问wp-admin是一个登陆页面 账号密码都在标题中 登陆后是这个页面 在WP Statistics < 13.2.9 – 经过身份验证的 SQLi |CVE 2022-4230 |插件漏洞 (wpscan.com)中&#xff0c;里边有一段对漏洞的描述。 https://wpscan.com…

如何解决DDoS导致服务器宕机?

分布式拒绝服务攻击&#xff08;DDoS攻击&#xff09;是一种常见的网络安全威胁&#xff0c;通过大量恶意流量使目标服务器无法提供正常服务。DDoS攻击可能导致服务器宕机&#xff0c;严重影响业务的正常运行。本文将详细介绍如何检测和防御DDoS攻击&#xff0c;防止服务器宕机…

【ROS2 中间件RMW】基于FastDDS共享内存实现ROS2跨进程零拷贝通讯

前言 谈及ROS2的通讯机制&#xff0c;话题通讯作为一个最为常用的通讯手段&#xff0c;相信大家都不为陌生。但是即便话题通讯提供了一种跨进程的通讯方式&#xff0c;我们难免无法防止其在发布和订阅 的时候传递的消息被进行内存中的一次拷贝。因此诞生了零拷贝(zero_copy)这…

6G通信技术对比5G有哪些不同?

6G&#xff0c;即第六代移动通信技术&#xff0c;是5G之后的延伸&#xff0c;代表了一种全新的通信技术发展方向。与5G相比&#xff0c;6G在多个方面都有显著的不同和提升&#xff0c;以下是对6G通信技术及其与5G差异的详细分析&#xff1a; 一、6G的基本特点 更高的传输速率…

架构-微服务-环境搭建

文章目录 前言一、案例准备1. 技术选型2. 模块设计3. 微服务调用 二、创建父工程三、创建基础模块四、创建用户微服务五、创建商品微服务六、创建订单微服务 前言 ‌微服务环境搭建‌ 使用的电商项目中的商品、订单、用户为案例进行讲解。 一、案例准备 1. 技术选型 maven&a…