JVM参数整理汇总

老司机使用kettle频率超高和必要的设置 Linux/Mac:编辑 ,修改 : 根据数据量调整 (最大堆内存),建议不超过物理内存的70%。 2. 配置数据库连接池 作用:提高数据库连接的复用性,减少资源消耗。 步骤: 在Kettle界面中,打开 。 选择数据库类型(如MySQL、Oracle),设置以下参数: 最大连接数:根据并发任务调整(如20-50)。 初始连接数:5-10。 空闲超时:300秒(避免长时间占用连接)。 3. 启用日志和错误处理 作用:精准定位转换/作业执行问题。 步骤: 日志级别设置: 阅读详情

背景介绍

  • 日常在开发时需要设置相关虚拟机参数,这里专门对经常用到的虚拟机参数做一整理汇总,方便以后使用的时候查看。

相关参数

堆内存溢出(堆溢出时保存快照)

  • -XX:+HeapDumpOnOutOfMemoryError
    该配置会把快照保存在user.dir中,比如你用tomcat启动,那应该是在tomcat的bin目录下
    当然,也可以通过XX:HeapDumpPath=./java_pid.hprof来显示指定路径
    此外,OnOutOfMemoryError参数允许用户指定当出现oom时,指定某个脚本来完成一些动作,比如发送消息等。
    $ java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -XX:OnOutOfMemoryError ="sh ~/cleanup.sh" MyApp

  • 说明:
    通过jvm参数-XX:+HeapDumpOnOutOfMemoryError可以让JVM在出现内存溢出时候Dump出当前的内存转储快照。快照格式为java_pid2821.hprof(2821为Java进程号)

  • 参数设置:

    • -XX:+HeapDumpOnOutOfMemoryError :当内存溢出时触发java.lang.OutOfMemo: Java heap space
    • -XX:HeapDumpPath=/opt/heap·: 内存溢出时,保存内存快照文件
    • 例子:
nohup java -jar -server -Xms8g -Xmx8g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/heap.hprof ./test.jar >/dev/null 2>&1 &

OOM排查

  • 1、先查看应用进程号pid: ps -ef | grep 应用名
  • 2、查看pid垃圾回收情况: jstat -gc pid 5000(时间间隔,毫秒),即会每5秒一次显示进程号为68842的java进成的GC情况,显示内容:
  • 3、开启OOM快照:
    • -XX:+HeapDumpOnOutOfMemoryError(开启堆快照)
    • -XX:HeapDumpPath=C:/m.hprof(保存文件到哪个目录)
  • 4、dump 查看方法栈信息:
    • jstack -l pid > /home/test/jstack.txt
  • 5、dump 查看JVM内存分配以及使用情况
    • jmap -heap pid > /home/test/jmapHeap.txt
  • 6、dump jvm二进制的内存详细使用情况 (效果同在Tomcat的catalina.sh中添加 set JAVA_OPTS=%JAVA_OPTS% -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/test//oom.hprof 此文件需要借用内存分析工具如:Memory Analyzer (MAT)来分析)
    • jmap -dump:format=b,file=/home/test/oom.hprof pid

JVM内存设置

  • 参考1有如下描述

  • 设置JVM内存的参数有四个:

    • -Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
    • -Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
    • -Xmn Java Heap Young区大小,不熟悉最好保留默认值;
    • -Xss 每个线程的Stack大小,不熟悉最好保留默认值;
  • 参考2有如下描述:

    • -Xms512m 设置JVM促使内存为512m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
    • -Xmx512m ,设置JVM最大可用内存为512M。
    • -Xmn200m:设置年轻代大小为200M。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
    • -Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
  • 启动命令示例

  • 启动命令示例,这样启动150m左右差不多够了:

nohup java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=56m -Xms128m -Xmx128m -Xmn32m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC short-url.jar --spring.profiles.active=prod >/dev/null 2>&1&
  • 以上命令中的参数意义:
    • -XX:MetaspaceSize=128m:元空间默认大小
    • -XX:MaxMetaspaceSize=128m:元空间最大大小
    • -Xms1024m:堆最大大小
    • -Xmx1024m:堆默认大小
    • -Xmn256m:新生代大小
    • -Xss256k:栈最大深度大小
    • -XX:SurvivorRatio=8:新生代分区比例 8:2
    • -XX:+UseConcMarkSweepGC:指定使用的垃圾收集器,这里使用CMS收集器
    • -XX:+PrintGCDetails:打印详细的GC日志

JDK虚拟机参数

  • -XX:+<option> // 开启option参数;
    -XX:-<option> // 关闭option参数;
    -XX:<option>=<value> // 将option参数的值设置为value。
    -Xms 指定启动时内存大小(此值可以设置成与-Xmx相同,以避免每次GC完成后 JVM 内存重新分配)。
    -Xmx 指程序运行时最大可用内存大小,程序运行中内存大于这个值会 OutOfMemory。
    -Xmn 年轻代大小(整个JVM内存大小 = 年轻代 + 年老代 + 永久代)。
    -Xss 设置每个线程的堆栈大小
    java虚拟机对非堆区内存配置的两个参数:
    1、-XX:PermSize:表示非堆区初始内存分配大小(方法区)
    2、-XX:MaxPermSize:表示对非堆区分配的内存的最大上限(方法区)。

JDK 官方文档对 -X、-XX的说明

  • 1、JDK 7 及以前版本官方文档对 -X、-XX的说明如下:
Options that begin with -X are non-standard (not guaranteed to be supported on all VM implementations), and are subject to change without notice in subsequent releases of the JDK.

以 -X 开头的选项是非标准选项(不能保证被所有的 JVM 实现都支持),并且在 JDK 的后续版本中不需要通知就可以进行更改。

Options that are specified with -XX are not stable and are subject to change without notice.

以 -XX 指定的选项是不稳定的,并且会在没有通知的情况下进行更改。

  • 2、JDK 8 版本

相对于非标准选项,标准选项保证得到所有 Java 虚拟机(JVM)的实现支持[1]。它们用于常见的操作,如检查 JRE 版本(-version)、设置类路径(-classpath)、启用详细输出(-verbose)、-javaagent、-javaagent等等,这些标准参数可以通过java -help 查看。

-X:非标准选项

Non-standard options are general purpose options that are specific to the Java HotSpot Virtual Machine, so they are not guaranteed to be supported by all JVM implementations, and are subject to change. These options start with -X.

以 -X 开头的这些选项是非标准选项,是特定于 Java HotSpot 虚拟机的通用选项,不保证所有 JVM 的实现都支持它们,而且还会发生变化。

-XX:高级选项

Advanced options are not recommended for casual use. These are developer options used for tuning specific areas of the Java HotSpot Virtual Machine operation that often have specific system requirements and may require privileged access to system configuration parameters. They are also not guaranteed to be supported by all JVM implementations, and are subject to change. Advanced options start with -XX.

以 -XX 开头的选项是高级选项,高级选项不建议随意使用。这些是开发人员用于调优 Java HotSpot 虚拟机操作的特定区域的选项,这些选项通常具有特定的系统需求,并且可能需要特权访问系统配置参数。它们也不保证得到所有 JVM 的实现的支持,并且可能会发生变化。

欢迎关注我的微信公众号ItBeeCoder

在这里插入图片描述

分析和解决java.lang.OutOfMemoryError: Java heap space问题 最近客户反馈在生产环境导入操作时遇到任务一直执行中,并且入库的数据量一直不改变。java.lang.OutOfMemoryError: Java heap space (JVM 堆空间溢出)简单来说就是在创建新的对象时, 堆内存中的空间不足以存放新创建的对象,导致此种问题的发生。 阅读详情

相关推荐

java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法

java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法

jvm参数

1. 设置堆大小 -Xmx1024m -Xms1024m -Xmn2g -Xss128k -Xmx1024m:设置JVM最大可用内存为1024M。 -Xms1024m:设置JVM促使内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小...

michaelzqm2的博客 598

PCB阻焊工艺全解析:从油墨选择到显影测试的完整指南

本文深入解析PCB阻焊工艺全流程,从材料科学角度对比液态光成像(LPI)油墨、干膜阻焊等核心材料特性,系统阐述前处理、涂覆、预烤曝光、显影固化等关键步骤的工艺要点与参数控制。重点探讨了如何通过优化油墨选择与工艺参数,解决常见缺陷,提升PCB的可靠性、美观度及可制造性,为工程师提供从理论到产线实战的完整指南。

s3t4u的博客 554

Linux 中启动 SpringBoot 项目出现 java.lang.OutOfMemoryError Java heap space 错误

表示 Java 的堆内存溢出。每个 Java 程序都只能使用一定量的内存,这种限制是由于 JVM 的启动参数决定的。heap space 堆内存permanent generation 永久代(实际就是方法去,用来存放类信息、常量、静态变量、及时编译器编译后的代码等)这两个区域的最大内存大小是由 JVM 启动参数-Xmx和指定,如果没有指定,则会根据操作系统版本、JVM 版本和物理内存的大小来确定。当创建新的对象时,堆内存中的空间不足以存放新创建的对象,就会引入。

吞吞吐吐大魔王的博客 6888

直播间人气协议算法:从批量操作到数据接口的自动化实现

本文深入解析直播间人气协议算法的实现原理与技术细节,涵盖批量账号管理、IP代理方案、用户行为模拟算法及平台数据接口调用策略。通过逆向工程分析通信协议,结合算法设计实现自动化流量提升,同时探讨风控规避与系统性能优化方案,为开发者提供合规的技术实践参考。

weixin_30505225的博客 520

外部ADC之AD7949——14bit、8通道、250k

在实际项目中,仅靠单片机内部的ADC采样,很有可能达不到实际采样精度,这个时候就需要外接外部ADC芯片进行采样,这些外部ADC一般都是SPI接口或者是并口。单片机通过SPI接口或并口读写芯片内部寄存器,配置参考极性、采样通道、低通滤波器带宽、基准电压源、通道序列器等。本文主要对ADI家的14bit、8通道、250k的ADC7949做一个总结,这款ADC在实际项目中使用,采样精度达到要求,读取时序有点点绕,但是是一款十分常用的ADC芯片。就是价格不太友好哈哈,一块芯片快60。

cyaya6的博客 6717

java 8 jvm参数_JDK8 JVM 部分参数说明(一)

最新整理一下JVM参数,发现很多很复杂,没有全部收集的,现在对部分网络上材料汇总记录这些选项是特定于Java HotSpot虚拟机的通用选项。-X显示所有可用-X选项的帮助。-Xbatch禁用后台编译。默认情况下,JVM将该方法编译为后台任务,以解释器模式运行该方法,直到后台编译完成。该-Xbatch标志禁用后台编译,以便所有方法的编译作为前台任务继续进行,直到完成。此选项相当于-XX:-Back...

weixin_35552251的博客 826

立创开源TinyAWG:基于ZYNQ7010的35MHz带宽200MSa/s任意波形发生器设计与实现

本文详细解析了立创开源TinyAWG的设计与实现,这是一款基于ZYNQ7010芯片的低成本高性能任意波形发生器。项目实现了35MHz带宽和200MSa/s采样率,核心采用ARM+FPGA协同架构,FPGA负责高速DDS信号生成,ARM运行Linux并搭载LVGL图形界面。文章涵盖了硬件选型、电路设计、软件逻辑及性能测试,为复刻和学习ZYNQ系统设计、高速DAC应用提供了完整参考。

weixin_42576467的博客 437

JVM性能调优2:JVM性能调优参数整理

整理的基于jdk 1.6 jvm参数。

rodesad的博客 8400

Misc-RAR隐写

题目来自于:XCTF的SimpleRAR,由于涉及到许多新知识,所以写篇小文子记录一下。 一、下载完后是一个压缩包。 里面就有一个flag.txt,打开之后发现有一串字符是flag is not here,而且我们查看他的文件大小,只要十六字节,绝对不可能再藏着什么信息了。 然后把压缩包拉到010editor里面,发现一下子出来好多新的内容,很明显是有夹杂着的附加文件。 二、rar文件头信息。 rar 是由一个一个 block 组成的,每个 block 有以下几个部分 ...

admin的博客 1362

OP-TEE虚拟化支持详解

OP-TEE虚拟化支持解析 OP-TEE提供实验性虚拟化方案,支持多虚拟机共享安全执行环境。核心特性包括: 配置选项:CFG_VIRTUALIZATION启用虚拟化,CFG_VIRT_GUEST_COUNT限制虚拟机数量并分配均等内存资源; Hypervisor协作:需实现虚拟机生命周期通知、SMC参数转换、内存固定等关键协议; 当前限制:仅支持Armv8架构,硬件资源共享有限,采用静态内存配额机制; 架构实现:通过MMU分区切换和扩展内存分配器实现多租户隔离,Nexus核心层管理虚拟机上下文。该方案适用于

Linux内核架构师 109

jvm参数都有哪些

常见JVM参数包括:内存设置:-Xms(初始堆)、-Xmx(最大堆)、-Xss(线程栈)垃圾回收器:-XX:+UseG1GC(G1回收器)、-XX:+UseParallelGC(并行回收)监控调试:-XX:+HeapDumpOnOutOfMemoryError(OOM生成堆转储)性能优化:-XX:MaxMetaspaceSize(元空间上限)日志参数:-Xloggc(GC日志路径)

weixin_46084191的博客 2510

如何解除“无法完成操作 因为文件包含病毒或潜在垃圾软件”

当运行软件遇到“无法完成操作 因为文件包含病毒或潜在垃圾软件”时,如何解决?控制面板-系统和安全-Windows Defender防火墙-自定义设置,将专用网络及公用网络关闭。点击后,选择“病毒和威胁防护”-管理配置。进入安全中心后,选择“病毒和威胁防护”将需要排斥的选项输入后,保存配置即可。2:打开windows安全中心。

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 6万+

JVM常用参数和命令汇总

常用的JVM参数和命令汇总

拾年一剑 的专栏 687

XCP实战系列介绍07-使用ASAP2 Editor生成A2l文件详解

介绍通过ASAP2 Editor工具生成A2l文件步骤详解

initiallizer的博客 7298

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

常见JVM面试题及答案整理

前言 总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话,欢迎指出,后续有空会更新。 1.什么情况下会发生栈内存溢出。 思路: 描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一个栈溢出的demo。 我的答案: 栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作...

Java笔记 25万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JVM参数整理

jvm参数较多,常用的就是之前学习笔记整理的关于OOM异常的调整。 参数分类含义: 标准参数:例如javap -verbose X参数:所有的这类参数都以-X开始,例如常用的-Xmx, 对于布尔类型的参数,我们有”+”或”-“,然后才设置JVM选项的实际名称。例如,-XX:+用于激活选项,而-XX:-用于注销选项。 对于需要非布尔值的参数,如string或者i...

dcm19920115的博客 162

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JVM-核心参数整理

JVM参数分为标准参数、X参数和XX参数三大类,主要用于控制运行模式、内存分配和垃圾回收。核心调优参数包括-Xms/-Xmx设置堆内存,-XX:+HeapDumpOnOutOfMemoryError用于内存溢出排查,以及新生代和老年代的比例调整参数。垃圾收集器选择需权衡吞吐量与暂停时间,Parallel GC适合高吞吐量场景,CMS收集器适用于低延迟需求。生产环境建议设置相同初始和最大堆内存,并合理配置新生代大小和晋升策略。注意永久代在JDK8后被元空间取代,需单独配置相关参数。

小人物的草稿本 845

JVM参数汇总

垃圾回收器相关: Serial收集器: -XX:+UseSerialGC -XX:+UseSerialOldGC 新生代采用复制算法,老年代采用标记-整理算法。 ParNew收集器: -XX:+UseParNewGC -XX:ParallelGCThreads:指定收集线程数,但是一般不推荐修改。 新生代采用复制算法,老年代采用标记-整理算法。 Parallel Scavenge收集器 -XX:+...

liuyumei3688的专栏 886

【JVM】流程汇总

① 开启堆 dump(-XX:+HeapDumpOnOutOfMemoryError)→ ② 用 MAT/JProfiler 分析 dump,定位泄漏对象 → ③ 检查代码中不合理的引用(如静态集合未清理、长生命周期对象持有短生命周期对象)→ ④ 修复并验证。

weixin_44823875的博客 1万+

JVM10:JVM参数分类,JVM标准参数,JVM非标准参数,-X参数,-XX参数,其他参数;查看JVM参数,idea控制台输出JVM参数,单位换算;设置JVM参数的常见方式;常用JVM参数及含义

值得注意的是"=“表示默认值,”:="表示被用户或JVM修改后的值(JVM启动时也会修改一些参数的值,:=并不都是你设置的)通过jinfo实时调整某个java进程的参数(参数只有被标记为manageable的flags可以被实时修改)使用得最多的参数类型,也是非标准化参数,相对不稳定,主要用于JVM调优和Debug。要想查看某个进程具体参数的值,可以使用jinfo,这块后面聊。一般要设置参数,可以先查看一下当前参数是什么,然后进行修改。JVM参数分为两类,一类是标准参数。

郝开的博客 962

调整JVM参数的方式

调整JVM参数的方式取决于你的运行环境。无论是命令行、IDE、应用服务器、Spring Boot、Docker还是Kubernetes,都可以通过配置相应的参数来优化JVM性能。注:改文章只整理了大多数运行环境调参方式。如果需要了解如何调参可参考(

hsisbsjskknxbs的博客 2471

jvm 参数_JVM系列JVM参数手册

有时候找到了一个JVM参数,以为找到了一份武林秘籍,就偷偷在服务器把参数加上,结果第二天就收获一个事故通报。本文对常用 JVM 常用参数做了一个整理,但是参数的使用很复杂,本文仅仅提供常用参数的查阅,具体的使用还是需要根据具体的情况。JVM 是一个开放的标准,谁可以来实现 JVM,这导致不同JVM 实现的参数有所不同,本文基于 Hotspot 虚拟机。JVM 参数很多,总体上可以分成三类...

weixin_39673704的博客 221

jvm 参数整理

转自:http://blog.youkuaiyun.com/chenleixing/article/details/43230527 usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=...

135

JVM调优参数

JVM调优参数配置方式内存参数合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 JVM调优参数 配置方式 java [options] MainClass [arguments] options - JVM启动参数。 配置多个参数的.

360°顺滑 1万+
上一篇: Linux脚本
下一篇: SpringBoot开发相关知识整理
It_BeeCoder
博客等级 码龄10年 967粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值