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

 更新时间:2023年02月14日 08:51:51   作者:普通网友  
这篇文章主要介绍了java启动jar包修改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大小,不熟悉最好保留默认值;

操作步骤

1.执行命令:free -h

查询当前的内存占用情况(Mem是当前物理内存使用情况,Swap是swap交换分区使用情况)

2.执行命令:top

查看各个应用的内存占用情况

第一行:

10:51:46— 当前系统时间

601days, 17:08— 系统已经运行了601天17小时8分钟(在这期间没有重启过)

1users — 当前有1个用户登录系统

load average: 0.86, 0.73, 0.74 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行:

Tasks — 任务(进程),系统现在共有163个进程,其中处于运行中的有1个,162个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

3. 启动jar包

java -Xms1024m -Xmx1024m -Xmn700m -Xss16m -jar?xxx.jar &

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

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

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

-Xss16m

4. 如果是tomcat项目启动

则在bin目录下,执行命令:vim catalina.sh,然后在顶部加上:

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

重新启动项目之后,执行命令查询修改情况:jps -v

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解java 对象锁与类锁

    详解java 对象锁与类锁

    这篇文章主要介绍了java 对象锁与类锁的相关资料,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-09-09
  • SpringBoot中的yml文件中读取自定义配置信息及遇到问题小结

    SpringBoot中的yml文件中读取自定义配置信息及遇到问题小结

    这篇文章主要介绍了SpringBoot中的yml文件中读取自定义配置信息,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Java生成和解析XML格式文件和字符串的实例代码

    Java生成和解析XML格式文件和字符串的实例代码

    这篇文章主要介绍了Java生成和解析XML格式文件和字符串的实例代码,需要的朋友可以参考下
    2014-02-02
  • IDEA编译时报常量字符串过长的解决办法

    IDEA编译时报常量字符串过长的解决办法

    本文主要介绍了IDEA编译时报常量字符串过长的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Java面向对象编程之继承和多态以及包的解析与使用范例

    Java面向对象编程之继承和多态以及包的解析与使用范例

    继承就是可以直接使用前辈的属性和方法。自然界如果没有继承,那一切都是处于混沌状态。多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作
    2021-11-11
  • Java强制类型转换原理详解(父类转子类、子类转父类)

    Java强制类型转换原理详解(父类转子类、子类转父类)

    这篇文章主要给大家介绍了关于Java强制类型转换原理(父类转子类、子类转父类)的相关资料,所谓的强制类型转换,其实是自动类型转换的逆过程,在数据类型兼容的情况下,将容量大的数据类型转换为容量小的数据类型,需要的朋友可以参考下
    2023-12-12
  • java 一个类实现两个接口的案例

    java 一个类实现两个接口的案例

    这篇文章主要介绍了java 一个类实现两个接口的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Spring中@RequestMapping、@RestController和Postman

    Spring中@RequestMapping、@RestController和Postman

    本文介绍了Spring框架中常用的@RequestMapping和@RestController注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • JNI实现最简单的JAVA调用C/C++代码

    JNI实现最简单的JAVA调用C/C++代码

    这篇文章主要介绍了JNI实现最简单的JAVA调用C/C++代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 在Spring MVC中处理请求参数的方法总结

    在Spring MVC中处理请求参数的方法总结

    在Spring MVC中处理请求参数是通过使用各种注解来实现的,本文给大家介绍了在Spring MVC中处理不同类型请求参数的方法,并通过代码讲解的非常详细,需要的朋友可以参考下
    2024-08-08

最新评论