首页 > 系统相关 >java启动jar包修改JVM默认内存问题

java启动jar包修改JVM默认内存问题

时间:2023-07-27 10:12:15浏览次数:34  
标签:java jar XX Xmx 内存 JVM 大小

JVM默认物理内存

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。

默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。

因此服务器一般设置-Xms、-Xmx相等以避免在每次GC后调整堆的大小。

设置JVM内存的参数有四个

-XmxJava Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

-XmsJava Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;

-XmnJava Heap Young区大小,不熟悉最好保留默认值;

-Xss每个线程的Stack大小,不熟悉最好保留默认值;

 

启动jar包

java -jar -Xdebug -Xms1024m -Xmx2024m -Xmn700m -Xss16m  -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6011 backend-4.23.0.jar  >out.txt 2>err.txt

 

-Xms1024m 设置JVM促使内存为1024M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xmx1024m ,设置JVM最大可用内存为1024M。

-Xmn700m**:**设置年轻代大小为700M。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的 3/8。

-Xss16m

 

例如:java -jar -Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxPermSize=256M XXX.jar
java -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M MyClass

各参数含义:
-Xms128m JVM初始分配的堆内存
-Xmx512m JVM最大允许分配的堆内存,按需分配
-XX:PermSize=64M JVM初始分配的非堆内存
-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配

 

如果是tomcat项目启动

JAVA_OPTS="-Xms1024m -Xmx1024m -Xmn700m -Xss16m"

 

标签:java,jar,XX,Xmx,内存,JVM,大小
From: https://www.cnblogs.com/Fooo/p/17584189.html

相关文章

  • Java基础和MySQL
    Java基础==和equals的区别==比较的是值是否相等。==作用于基本数据类,他比较的是内容==作用于引用数据类型,比较的是地址值equals比较的是对象是否是同一个对象,比较的是对象的内容equals()方法存在于Object类中,在没有重写之前和==是一样,也是比较的是引用数据类型的地址......
  • 尚硅谷Java 宋红康2023版 - 学习笔记
    尚硅谷Java宋红康2023版-学习笔记观看地址https://www.bilibili.com/video/BV1PY411e7J6JDKJREJVMjdk是开发包,jre是运行包,jvm是java虚拟机(最小核心)javajdk版本8或11我这里就用8了。......
  • java.security.InvalidKeyException: Illegal key size 的解决方法
    一、原因JDK受版本安全限制,默认只允许128位长度以内的。秘钥长度,如果密钥大于128,会抛出java.security.InvalidKeyException:Illegalkeysize异常.java运行时环境默认读到的是受限的policy文件.文件位于${java_home}/jre/lib/security,这种限制是因为美国对软件出口的控制......
  • Java面试题 P9:List和Set的区别
    List:有序,按对象进入的顺序保存对象,可重复,允许多个Null元素对象,可以使用Iterator取出所有元素,在逐一遍历,还可以使用get(intindex)下标方式,获取指定下标的元素值Set:无序,不可重复,最多允许有一个Null元素对象,取元素时只能用lterator接口取得所有元素,在逐一遍历各个元素  ......
  • goole-java-format
    使用GoogleJavaFormat概述在本文中,我将教会你如何使用GoogleJavaFormat。GoogleJavaFormat是一个用于自动格式化Java代码的工具,可以帮助开发者编写符合Google代码风格指南的代码。通过使用GoogleJavaFormat,你可以减少手动调整代码格式的工作量,提高代码的可读性和一致性。......
  • Java方法详解
    Java方法详解什么是方法-System.out.println(),那么她是什么?-Java方法是语句的集合,它们在一起执行一个功能1方法是解决一类问题的步骤的有序组合2方法包含于类或对象中3方法在程序中被创建,在其他地方被引用-设计方法的原则:方法的本意是功能......
  • Java面试题 P8:接口和抽象类的区别
    普通回答:1、抽象类可以有抽象方法和实现的方法,可以存在普通成员函数,而接口中只能存在publicinterface方法。2、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是publicstaticfinal类型的。3、抽象类只能继承一个,接口可以实现多个。抽象类和接口的异同点 ......
  • Java面试题 P7:重载和重写的区别
    重载:发生在同一个类中,方法名必须相同,参数类型不同,参数个数不同,参数顺序不同,方法返回值和修饰符可以不同。1publicintadd(inta,Stringb)2publicStringadd(inta,Stringb)3//编译时会报错4重载与返回值无关。重写:发生在父子类中,方法名、参数列表必须相同,返回值范围......
  • java RedissonClient用法
    JavaRedissonClient用法Redis是一个开源的、基于内存的数据结构存储系统,它可以作为缓存、消息队列和分布式锁等多种用途。Redisson是一个基于Redis的Java驱动库,它提供了一些方便易用的接口和功能来操作Redis。RedissonClient是Redisson的核心对象,它用于与Redis服务器建立连接并......
  • java ReUtil提取${}里的数据
    提取${}里的数据(Java版)作为一名经验丰富的开发者,我很高兴能够教会你如何使用Java中的ReUtil提取${}里的数据。在开始之前,我们先来了解一下整个流程。整体流程下面是提取${}里的数据的整体流程,我们可以用表格来展示每个步骤的详细内容:步骤描述1定义正则表达式2创......