首页 > 系统相关 >Linux中JVM内存调整大小

Linux中JVM内存调整大小

时间:2023-07-19 18:12:27浏览次数:32  
标签:JVM 内存大小 修改 XX 内存 设置 Linux

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

标签:JVM,内存大小,修改,XX,内存,设置,Linux
From: https://www.cnblogs.com/cdlyy/p/17566300.html

相关文章

  • jvm配置
    Java虚拟机(JVM)参数配置说明 在Java、J2EE大型应用中,JVM非标准参数的配置直接关系到整个系统的性能。JVM非标准参数指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置。但是在生产环境中,为了提高性能,往往需要调整这些参数,以求系统达到最佳新......
  • Alibaba Cloud Linux 3 docker 开通2375
    AlibabaCloudLinux3上开通Docker2375端口Docker是一种开源的容器化平台,可以帮助开发者将应用程序和依赖项打包到一个独立的容器中,以便在任何地方运行。在AlibabaCloudLinux3上开通Docker2375端口可以让我们通过远程API访问Docker服务,方便地管理和监控容器。步骤......
  • Linux安装新版本Python3.9.0
    Linux自带的python版本过低,无法满足需要,遂安装一个Python3.9。在Linux系统上安装新版本的Python,可以通过以下步骤进行操作:1.下载新版本前往Python官方网站(https://www.python.org/downloads/source/),选择适合你的系统的最新版本的源代码进行下载。解压源代码包。使用命令行......
  • JVM运行时数据区
    JVM运行时数据区1.概述内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行不同的JVM对于内存的划分方式和管理机制存在着部分差异。下图是经典的......
  • JVM程序计数器
    JVM程序计数器1.介绍JVM中的程序计数寄存器(ProqramCounterRegister)中,Reqister的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序......
  • Linux的nm查看动态和静态库中的符号
    功能列出.o.a.so中的符号信息,包括诸如符号的值,符号类型及符号名称等。所谓符号,通常指定义出的函数,全局变量等等。 使用nm[option(s)][file(s)]有用的options:-A在每个符号信息的前面打印所在对象文件名称;-C输出demangle过了的符号名称;-D打印动态符号;-l使用对......
  • Linux uevent分析、用户接收uevent以及mdev分析
    intmdev_main(intargc,char**argv)MAIN_EXTERNALLY_VISIBLE;intmdev_main(intargcUNUSED_PARAM,char**argv){RESERVE_CONFIG_BUFFER(temp,PATH_MAX+SCRATCH_SIZE);INIT_G();ifENABLE_FEATURE_MDEV_CONFG.filename="/etc/mdev.conf";endif......
  • Linux命令-按照与使用(17)(转载)解决同一台服务器上部署多个tomcat的同一个项目session冲
    ————————————————版权声明:本文为CSDN博主「strive_or_die」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/strive_or_die/article/details/103191546————————————————版权声明:本文为CS......
  • Linux系统Apache添加监听端口后无法启动服务并报错:Job for httpd.service failed beca
    导言:这是SELinux安全机制导致的。解决方法:1.查看当前httpd端口#semanageport-l|grephttp2.将对应端口加入SELinux,以8068为例#semanageport-a-thttp_port_t-ptcp80683.再次查看#semanageport-l|grephttp4.重启Apache服务#systemctlrestarth......
  • android 匿名内部类内存泄露
    Android匿名内部类内存泄露在Android开发中,内存泄露是一个常见的问题。当我们在使用匿名内部类时,如果不小心处理不当,也可能导致内存泄露的问题。本文将介绍什么是匿名内部类、为什么会导致内存泄露以及如何避免这些问题。什么是匿名内部类在Java中,内部类是指定义在其他类内部的......