开发者

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

开发者 https://www.devze.com 2023-02-14 10:44 出处:网络 作者: 普通网友
目录JVM默认物理内存设置JVM内存的参数有四个操作步骤1.执行命令:free -h2.执行命令:top3. 启动jar包4. 如果是tomcat项目启动总结JVM默认物理内存
目录
  • JVM默认物理内存
  • 设置JVM内存的参数有四个
  • 操作步骤
    • 1.执行命令:free -h
    • 2.执行命令:top
    • 3. 启动jar包
    • 4. 如果是tomcat项目启动
  • 总结

    JVM默认物理内存

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

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

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

    设置JVM内存的参数有四个

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

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

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

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

    操作步骤

    1.执行命令:free -h

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

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

    2.执行命令:top

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

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

    第一行:

    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 www.开发者_C培训devze.comaverage数据是每隔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。js整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的 3/8。

    -Xss16m

    4. 如果是tomcat项目启动

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

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

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

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

    总结

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

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号