Linux中JVM内存调整大小

linux修改jvm内存大小
第一:
要修改Linux上JVM的内存大小,可以按照以下步骤进行:
1.打开JVM的配置文件,一般是在JVM安装目录下的bin目录中,文件名为java或者jvm.cfg。
2.找到-Xmx和-Xms参数,它们分别表示JVM的最大内存和初始内存大小。可以根据需要修改这两个参数的值,例如将-Xmx设为2G将-Xms设为1G.
3.保存配置文件并重启JVM,使新的内存设置生效。
需要注意的是,修改JVM内存大小可能会影响系统的性能和稳定性,应该根据实际情况进行调整

第二:
在Linux系统中,我们可以通过修改JVM参数来调整JVM内存大小,以满足不同应用程序的需要。下面是具体步骤:
1.找到JVM的启动配置文件。通常情况下,JVM启动命令会在系统的某个目录下,你需要找到这个文件,以便修改JVM参数。常见的启动命令行为“java -iar yourapp.jar”。
2.打开启动配置文件。在这个文件中,你可以找到JVM启动时使用的参数,如-Xms和-Xmx,它们分别用于指定JVM的最小和最大内存大小。
3.修改参数值。根据你的需求,在文件中修改-Xms和-Xmx参数的数值即可。例,如果你需要将JVM内存大小设置为2GB,可以在配置文件中添加如下参数:
-Xms2g -Xmx2g4.保存配置文件并重启应用程序。修改参数值后,保存文件并重新启动应用程序,新的内存大小参数会生效。
需要注意的是,修改JVM内存大小时应该谨慎,一些低端主机内存本身就偏小,在配置JVM内存大小时不要将其置于过大的内存压力之下,否则会导致应用程序出现运行时错误。

第三:
JVM内存是Java虚拟机的一部分,用于存储Java应用程序的数据和运行时信息,在Linux系统上,可以通过修改JVM内存大小来优化Java应用程序的性能。下面是一些方法来帮助你设置JVM内存大小
一、通过命令行参数设置JVM内存大小。
1.查看JM默认内存设置,可以用命令: java -XX:+PrintFlagsFinal -version 列出Java默认的内存情况。
2.通过-Xmx和-Xms选项设置内存限制
Xmx选项设置Java使用到的最大内存,-Xms选项设置初始内存大小。例如: java -Xmx2048m -Xms1024m MainClass
二、在启动脚本中设置JVM内存大小 。
如果是通过启动脚本启动Java应用程序,可以在脚本中指定JVM内存大小参数。这里以Tomcat为
例,可以将以下语句添加到Tomcat启动脚本中: export JAVA OPTS="-Xms512m -Xmx1024m"、
三、在tomca中修改JVM内存大小。可以通过修改Tomcat的catalina.sh文件中的JAVA OPTS变量来修改JVM内存大小,
在该文件中添加以语句: export JAVA OPTS="-Xms512m -Xmx1024m"
四、在应用程序中设置JVM内存大小在应用程序中调用Runtime.getRuntime).exec方法时可以指定JVM内存大小参数。
例如:Runtime.getRuntime().exec("ava -Xmx2048m -Xms1024m MainClass"):

注:

需要把测试的4个服务迁移到某台测试机器上,可是这台机器的内存空间只剩下4g了, 每个服务要是分配1g的内存,这个机器在流程高峰,内存不够用,可能就会kill掉某个服务了,这样会影响服务的稳定性,如果把对应服务的内存分配减少到512那么就应该很足够了。
ps:测试的服务分配的内存小一些,对服务的稳定基本无影响,线上的根据需求合理分配

查看一下目前我们的服务占用多少内存
ps -ef |grep pid
-Xms1g -Xmx1g -Xmn512m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:SurvivorRatio=4 -XX:MaxTenuringThreshold=10 -XX:CMSInitiatingOccupancyFraction=80
1
你会看到服务一些重要的配置项,说几个对我们更改内存重要的几个配置
堆栈区:
xms jvm初始分配的堆内存大小 助记:memory startup
xmx jvm最大允许分配的堆内存 助记:memory max
xmn 年轻代大小 助记:memory new
xss 每个线程的堆栈大小 助记:memory stack size

非堆栈区:
-XX:permSize 持久带,非堆栈区初始分配内存大小,permanent size
-XXL:MaxPermSize 非堆栈区最大内存

基本规则:
整个物理内存有的是4G,有的是8G
xmx=xmn+老年代

那么我们如果要设置512的内存的话,xmx和xms初始堆内存和最大堆内存都设置为512m,这两个值设置为相同的,主要是为了避免每次垃圾回收完成后,jvm重新分配内存;
xmn一般为整个堆栈大小的3/8,这里可以设置为256(1/2接近3/8)
xss jdk5.0之后的每个线程堆栈大小为1M,在相同的物理内存下,适当的减小这个值,可以生成更多的线程,上限一般在3000-5000个左右。
-XX:permSize 一般为物理内存的1/64,这里可以设置为64M。
-XXL:MaxPermSize 持久带最大物理内存一般为物理内存的1/4,基本跟xmx一致,这里可以设置为512M。
这些都是默认值,其实并没有涉及jvm调优的知识,仅限于知道了什么意思,一些基本的默认配置。
那么我们设置512内存的基本配置就是:

-Xms512m -Xmx512m -Xmn256m -Xss1024K -XX:PermSize=64m -XX:MaxPermSize=512m -XX:ParallelGCThreads=8 -XX:+Us

posted @ 2023-07-19 18:03  初仰  阅读(2941)  评论(0编辑  收藏  举报