JVM系列之常用参数的查看和设置

article/2025/9/18 1:48:32

JVM常用参数

参数名称含义默认值说明
-Xms初始堆大小,等价于-XX:InitialHeapSize物理内存的1/64默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制.
-Xmx最大堆大小,等价于-XX:MaxHeapSize物理内存的1/4默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制
-Xmn

年轻代大小,设置了-Xmn之后

-XX:NewSize和-XX:MaxNewSize都为该数值

默认XX:NewSize为-XX:InitialHeapSize的1/3

XX:MaxNewSize为-XX:MaxHeapSize的1/3

注意:此处的大小是(eden+ 2 survivor space).与jmap -heap中显示的New gen是不同的。
整个堆大小=年轻代大小 + 年老代大小 + 持久代大小.
增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8
-Xss每个线程的栈大小1mJDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。在相同物理内存下,减小这个值能生成更多的线程,当然操作系统对一个进程内的线程数还是有限制的,不能无限生成。线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会出现内存溢出的错误。
-XX:PermSize非堆内存初始值物理内存的1/64java8及之后就不支持了,警告如下:Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
-XX:MaxPermSize最大非堆内存的大小物理内存的1/4java8及之后就不支持了,同上
-XX:MetaspaceSize元空间初始大小21m一旦元空间的大小达到初始大小,就会触发Full GC并会卸载没有用的类,然后该值将会向MaxMetaspaceSize扩大一点。如果初始化的高水位线设置过低,会频繁的触发Full GC,高水位线会被多次调整。所以为了避免频繁GC以及调整高水位线,建议将-XX:MetaspaceSize设置为较高的值。
-XX:MaxMetaspaceSize元空间最大大小物理内存的总大小默认情况下,元空间最大的大小是系统内存的大小,元空间一直扩大,虚拟机可能会消耗完所有的可用系统内存。一般不建议修改-XX:MaxMetaspaceSize
-XX:NewRatio老年代(不包含永久区)和新生代(Eden+2*S)的比值2 
-XX:SurvivorRatioEden区和Survivor区的比值8 
-XX:MaxTenuringThreshold设置Survivor区的最大分代年龄15具体参看JVM系列之内存分配和回收策略中对象的衰老过程
-XX:ReservedCodeCacheSize设置代码缓存的大小240m用来存储已编译方法生成的本地代码,如果代码缓存被占满,JVM会打印出一条警告消息,并切换到interpreted-only 模式:JIT编译器被停用,字节码将不再会被编译成机器码。因此,应用程序将继续运行,但运行速度会降低一个数量级,直到有人注意到这个问题。

JVM参数查看

1、查看所有参数信息 

jinfo -flags pid

 

jmap -heap pid

 

2、查看单个参数信息

jinfo -flag MetaspaceSize pid

 

JVM参数设置

1、IDEA中参看IDEA中VM options参数设置和说明

2、Linux下修改TomcatJVM内存大小

要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前。

# OS specific support.  $var _must_ be set to either true or false.
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m" 
cygwin=false

3、windows下修改Tomcat JVM内存大小

解压版本的Tomcat , 要通过startup.bat启动tomcat才能加载配置,添加在tomcat 的bin下catalina.bat 里

#rem Guess CATALINA_HOME if not defined
#set CURRENT_DIR=%cd%后面添加
set JAVA_OPTS=-Xms1024m -Xmx1024m -Xmn=256m -XX:PermSize=128M -XX:MaxPermSize=128m -Djava.awt.headless=true  -XX:+UseSerialGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:D:\log\jvm\gc.log

安装版的Tomcat ,没有catalina.bat 
可以在/bin/tomcat6w.exe里修改就可以了 。

4、直接通过jar包启动

java -Xms512m -Xmx1024m -jar test.jar --spring.config.location=application.properties

 


http://chatgpt.dhexx.cn/article/jr1OZd2W.shtml

相关文章

Tomcat内存调整和默认线程池调整

上线了很久的一个项目(财政数据共享平台),由于领导要求,新来的同事就把新项目(社保数据共享)做在了该项目上,这就导致了许多的问题,先从日志说起,该同事把数据获取和传送…

lunix下修改tomcat的堆内存大小

修改tomcat的初始堆大小和最大堆大小 要添加在tomcat 的bin 下catalina.sh 里,位置cygwinfalse前 。注意引号要带上,红色的为新添加的. # OS specific support. $var _must_ be set to either true or false.JAVA_OPTS"-Xms256m -Xmx512m -Xss1024K -XX:Perm…

java对象内存布局和对象定位

目录 观察对象在内存中的存储布局 利用java agent 利用JOL工具 Java对象定位 直接指针寻址 间接寻址 JIT(Just In-Time Compiler) c1、c2 编译线程 c1, c2编译器线程高CPU消耗 - 潜在的解决方案 使用字节码和汇编语言同步分析volatile,synchron…

【C/C++ 集成内存调试、内存泄漏检测和性能分析的工具 Valgrind 】Linux 下 Valgrind 工具的全面使用指南

目录标题 Valgrind 工具的安装 交叉编译Valgrind Valgrind 工具的作用Memcheck 内存泄漏检测工具常规检测(程序结束后生成报告)重要参数长时间运行的服务使报告输出至文件报告分析示例一分析\_示例一示例二分析\_示例二 Massif堆栈检测工具Massif的基本…

C/C++开发,无可避免的多线程(篇一).跨平台并发编程姗姗来迟

目录 一、编译环境准备 1.1 编译环境配置 1.2 先睹为快的c11多线程编程示例 二、c/c并发编程支持 2.1 进程与线程 2.2 c/c多线程的并发编程 2.3 c11以前的多线程支持 2.4 c11以后的多线程支持 2.5 线程与互斥锁 2.6 跨线程安全问题 三、认识c/c的thread 3.1 std::thread类 3…

windows利器之cygwin

好久没写文章了,诸事烦身,脱不开。。。 不想开虚拟机占内存,同时还想在windows下使用linux命令,那就是cygwin了 第一部分 去官网下一个exe https://cygwin.com/install.html 直接运行, 基本都是默认, …

spi时序图怎么分析,怎么看懂spi时序图

我做产品的时候,最怕就是做IIC和SPI的通信。 这两种协议时序哪怕是延时时间有误差,都有可能导致通信不上。 出现问题的时候,如果没设备也很难排查问题到底出在哪里。 有时候这个产品写好的时序程序,换一个单片机用同一个程序移植过…

怎么看懂单片机时序图?

本人没有上过单片机相关的专业课,是在《计算机系统结构》里遇见的时序图。由于看不懂加之老师没有专门讲,因此自行查阅了相关的视频和博客。(参考视频已放在文末) 网上资源贫瘠,不过我也不需要太过深入的知识。 大家…

UML系列——时序图(顺序图)

引言 用例图、类图、活动图、时序图之间是什么关系? 时序图有什么作用? 先来模拟一下三国演义的赤壁之战的时序图,先知道它到底长什么样子,再深入介绍: 小伙伴惊呆了,这样画战略图,一目了然&…

UML图之五——时序图

一、什么是时序图 序列图表示了系统在参与者互动执行某一个用例期间,系统内部的一群对象的协作情况。一个用例就对应一个时序图。序列图是对系统动态行为进行描述。用于用例分析和设计阶段。 二、对比 1、序列图和协作图 序列图跟协作图相似,两种图传递的意思是一样的。不…

浅谈时序图

前序: 这周基本都在肝txmini项目,不知道是不是我菜,总觉得难度还是挺高的,所以就没太多时间整理知识点了。 项目进展了快大半个月了,最后因为性能问题,我们还是选择重构原来的代码。准备用golang去重构原本…

读懂时序图

UML建模之时序图(Sequence Diagram) 时序图简介(Brief introduction)时序图元素(Sequence Diagram Elements) 角色(Actor)对象(Object)生命线(Li…

时序图的概念

一. 时序图 (Sequence Diagram) 时序图 : 显示对象之间的关系, 强调对象之间消息的时间顺序, 显示对象之间的交互; 时序图是一个二维图,横轴表示对象,纵轴表示时间,消息在各对象之间横向传递,依照时间顺序纵向排列。 1.时序图的…

UML之时序图详解

作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131 动态图概念 : 从静态图中抽取瞬间值的变化描述系统随时间变化的行为, 动态图包括交互图活动图状态图, 这篇博客研究交互图 包括时序图和协作图; – 时序图 : 显示对象之间的关…

时序图简介

什么是时序图 来自百度百科的介绍: “又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或…

时序图

一. 时序图 (Sequence Diagram) 1.时序图的概念 时序图定义 : 描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图; 时序图描述的事物: 时序图描述系统中类和类之间的交互, 将这些交互建模成消息交换, 时序图描述了类以及类之间的交换…

时序图,程序员的保命技能

最近,各个大厂都在开猿节流,程序员们在公司里,靠什么技能来“保命”? 一方面,大家要有过硬的编程基础,另一方面,对UML图的掌握也很重要。今天,我们就来说一说其中一种重要的UML图&am…

Spring Boot异步任务、异步消息

目录 1.异步任务 1.1.概述 1.2.使用 2.异步消息 2.1.概述 2.2.使用 1.异步任务 1.1.概述 举一个例子,我现在有一个网上商城,客户在界面点击下单后,后台需要完成两步: 1.创建客户订单 2.发短信通知客户订单号 这里面第2…

python_异步

深入理解 Python 异步编程 前言 很多朋友对异步编程都处于“听说很强大”的认知状态。鲜有在生产项目中使用它。而使用它的同学,则大多数都停留在知道如何使用 Tornado、Twisted、Gevent 这类异步框架上,出现各种古怪的问题难以解决。而且使用了异步框架…

httpx 与 异步

前言 HTTPX 是新一代的 python 解析库,它是一个功能齐全的 HTTP 客户端,用于Python 3,较requests(只能发送同步请求)和 aiohttp(只能发送异步请求)不同的是,它同时提供同步和异步 AP…