java啟動如何設(shè)置JAR包內(nèi)存大小
java啟動設(shè)置JAR包內(nèi)存大小
親測可用!
java -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M -jar a.jar
-Xms256m -Xmx512m: 對象使用的內(nèi)存,也稱堆內(nèi)存
PermSize 類使用的內(nèi)存,也稱永久內(nèi)存
由于Spring-boot內(nèi)置tomcat,默認內(nèi)存占用可能很大,最好設(shè)置下jar啟動占用的內(nèi)存。
給自己的jar包運行時分配內(nèi)存大小
java -jar -Xms8m -Xmx8m -XX:PermSize=8M -XX:MaxPermSize=16M ?bankmock-0.0.1-SNAPSHOT.jar
說明:
Xms
:堆內(nèi)存初始大小Xmx
:堆內(nèi)存最大值PermSize
:永久內(nèi)存初始大小MaxPermSize
:永久內(nèi)存最大值
上邊是啟動jar包時設(shè)置的jvm參數(shù);
自己打一個包,springboot搭建的,打包后40多兆。
當(dāng)我們在windows上cmd進入啟動的時候,當(dāng)我設(shè)置的啟動參數(shù)為:
java -jar -Xms8m -Xmx8m -XX:PermSize=8M -XX:MaxPermSize=16M ?bankmock-0.0.1-SNAPSHOT.jar
會發(fā)現(xiàn)內(nèi)存溢出了,說明我們分配的內(nèi)存不夠,最后我 進行多次實驗后,找到了最小值:
java -jar -Xms8m -Xmx16m -XX:PermSize=8M -XX:MaxPermSize=16M ?bankmock-0.0.1-SNAPSHOT.jar?
我們發(fā)現(xiàn)服務(wù)正常啟動了。
JVM的一些參數(shù)設(shè)置
#常用的設(shè)置 -Xms:初始堆大小,JVM 啟動的時候,給定堆空間大小。 -Xmx:最大堆大小,JVM 運行過程中,如果初始堆空間不足的時候,最大可以擴展到多少。 -Xmn:設(shè)置堆中年輕代大小。整個堆大小=年輕代大小+年老代大小+持久代大小。 -XX:NewSize=n 設(shè)置年輕代初始化大小大小 -XX:MaxNewSize=n 設(shè)置年輕代最大值 -XX:NewRatio=n 設(shè)置年輕代和年老代的比值。如: -XX:NewRatio=3,表示年輕代與年老代比值為 1:3,年輕代占整個年輕代+年老代和的 1/4 -XX:SurvivorRatio=n 年輕代中 Eden 區(qū)與兩個 Survivor 區(qū)的比值。注意 Survivor 區(qū)有兩個。8表示兩個Survivor :eden=2:8 ,即一個Survivor占年輕代的1/10,默認就為8 -Xss:設(shè)置每個線程的堆棧大小。JDK5后每個線程 Java 棧大小為 1M,以前每個線程堆棧大小為 256K。 -XX:ThreadStackSize=n 線程堆棧大小 -XX:PermSize=n 設(shè)置持久代初始值 -XX:MaxPermSize=n 設(shè)置持久代大小 -XX:MaxTenuringThreshold=n 設(shè)置年輕帶垃圾對象最大年齡。如果設(shè)置為 0 的話,則年輕代對象不經(jīng)過 Survivor 區(qū),直接進入年老代。 #下面是一些不常用的 -XX:LargePageSizeInBytes=n 設(shè)置堆內(nèi)存的內(nèi)存頁大小 -XX:+UseFastAccessorMethods 優(yōu)化原始類型的getter方法性能 -XX:+DisableExplicitGC 禁止在運行期顯式地調(diào)用System.gc(),默認啟用 -XX:+AggressiveOpts 是否啟用JVM開發(fā)團隊最新的調(diào)優(yōu)成果。例如編譯優(yōu)化,偏向鎖,并行年老代收集等,jdk6紙之后默認啟動 -XX:+UseBiasedLocking 是否啟用偏向鎖,JDK6默認啟用 -Xnoclassgc 是否禁用垃圾回收 -XX:+UseThreadPriorities 使用本地線程的優(yōu)先級,默認啟用 等等等......
小結(jié)一下:
我們在自己開發(fā)項目的時候,需要部署到服務(wù)器上,那么運維人員會問你,你的項目需要多大內(nèi)存才能啟動起來呀,有的人就說管他的,越大越好,隨便開口就說1024M,2048M等等,其實我們自己在本地測試一下就知道了呀
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot啟動后的初始化數(shù)據(jù)加載原理解析與實戰(zhàn)
本文主要圍繞?Spring?Boot?啟動后的初始化數(shù)據(jù)加載展開,介紹了初始化任務(wù)的基本需求,包括全局配置加載、數(shù)據(jù)庫表初始化等,闡述了多種初始化加載方式,分析了它們的優(yōu)缺點,需要的朋友可以參考下2024-11-11Java源碼解析HashMap的tableSizeFor函數(shù)
今天小編就為大家分享一篇關(guān)于Java源碼解析HashMap的tableSizeFor函數(shù),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01Spring BeanFactory和FactoryBean區(qū)別解析
這篇文章主要介紹了Spring BeanFactory和FactoryBean區(qū)別解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03Java按時間梯度實現(xiàn)異步回調(diào)接口的方法
這篇文章主要介紹了Java按時間梯度實現(xiàn)異步回調(diào)接口,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08