开发者

java启动如何设置JAR包内存大小

开发者 https://www.devze.com 2023-02-14 10:42 出处:网络 作者: PrinciplesMan
目录Java启动设置JAR包内存大小给自己的jar包运行时分配内存大小JVM的一些参数设置总结java启动设置JAR包内存大小
目录
  • Java启动设置JAR包内存大小
  • 给自己的jar包运行时分配内存大小
    • JVM的一些参数设置
  • 总结

    java启动设置JAR包内存大小

    亲测可用!

    java -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M -jar a.jar

    -Xms256m -Xmx512m: 对象使用的内存,也称堆内存

    PermSize 类使用的内存,也称永久内存

    由于Spring-boot内置tomcat,默认内存占用可能很大,最好设置下jar启动占用的内存。

    给自己的jar包运行时分配内存大小

    java -jar -Xms8m -Xmx8m -XX:PermSize=8M -XX:MaxPermSize=16M bankmock-0.0.1-SNAPSHOT.jar

     说明:

    • Xms:堆内存初始大小
    • Xmx:堆内存最大值
    • PermSize:永久内存初始大小
    • MaxPermSize:永久内存最大值

    上边android是启动jar包时设置的jvm参数;

    自己打一个包,springboot搭建的,打包后40多兆。

    java启动如何设置JAR包内存大小

    当我们在Windows上cmd进入启动的时候,当我设置的启动参数为:

    java -jar -Xms8m -Xmx8m -XX:PermSize=8M -XX:MaxPermSize=16M bankmock-0.0.1-SNAPSHOT.jar

    java启动如何设置JAR包内存大小

    会发现内存溢出了,说明我们分配的内存不够,最后我 进行多次实验后,找到了最小值:

    java -jar -Xms8m -X编程客栈mx16m -XX:PermSize=8M -XX:MaxPermSize=16M bankmock-0.0.1-SNAPSHOT.jar

    java启动如何设置JAR包内存大小

    我们发现服务正常启动了。

    JVM的一些参数设置

    #常用的设置
    -Xms:初始堆大小,JVM 启动的时候,给定堆空间大小。 
     
    -Xmx:最大堆大小,JVM 运行过程中,如果初始堆空间不足的时候,最大可以扩展到多少。 
     
    -Xmn:设置堆中年轻代大小。整个堆大小=年轻代大小+年老代大小+持久代大小。 
     
    -XX:NewSize=n 设置年轻代初始化大小大小 
     
    -XX:MaxNewSize=n 设置年轻代最大值
     
    -XX:NewRatio=n 设置年轻代和年老代的比值。如: -XX开发者_Go教程:NewRatio=3,表示年轻代与年老代比值为 1:3,年轻代占整个年轻代+年老代和的 1/4 
     
    -XX:SurvivorRatio=n 年轻代中 Eden 区与两个 Survivor 区的比值。注意 Survivor 区有两个。8表示两个Survivor :eden=2:8 ,即一个Survi编程客栈vor占年轻代的1/10,默认就为8
     
    -Xss:设置每个线程的堆栈大小。JDK5后每个线程 Java 栈大小为 1M,以前每个线程堆栈大小为 256K。
     
    -XX:ThreadStackSize=n 线程堆栈大小
     
    -XX:PermSize=n 设置持久代初始值	
     
    -XX:MaxPermSize=n 设置持久代大小
     
    -XX:MaxTenuringThreshold=n 设置年轻带垃圾对象最大年龄。如果设置为 0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。
     
    #下面是一些不常用的
     
    -XX:LargePageSizeInBytes=n 设置堆内存的内存页大小
     
    -XX:+UseFastAccessorMethods 优化原始类型的getter方法性能
     
    -编程客栈XX:+DisableExplicitGC 禁止在运行期显式地调用System.gc(),默认启用	
     
    -XX:+AggressiveOpts 是否启用JVM开发团队最新的调优成果。例如编译优化,偏向锁,并行年老代收集等,jdk6纸之后默认启动
     
    -XX:+UseBiasedLocking 是否启用偏向锁,JDK6默认启用	
     
    -Xnoclassgc 是否禁用垃圾回收
     
    -XX:+UseThreadPriorities 使用本地线程的优先级,默认启用	
     
    等等等......

    小结一下:

    我们在自己开发项目的时候,需要部署到服务器上,那么运维人员会问你,你的项目需要多大内存才能启动起来呀,有的人就说管他的,越大越好,随便开口就说1024M,2048M等等,其实我们自己在本地编程客栈测试一下就知道了呀

    总结

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

    0

    精彩评论

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