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多兆。

當我們在windows上cmd進入啟動的時候,當我設(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)文章
SpringMVC DispatcherServlet組件實現(xiàn)解析
這篇文章主要介紹了SpringMVC DispatcherServlet組件實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結(jié)
這篇文章主要介紹了Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結(jié)的相關(guān)資料,需要的朋友可以參考下2016-06-06
解決IDEA2020 創(chuàng)建maven項目沒有src/main/java目錄和webapp目錄問題
這篇文章主要介紹了IDEA2020 創(chuàng)建maven項目沒有src/main/java目錄和webapp目錄問題解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
Springboot整合實現(xiàn)郵件發(fā)送的原理詳解
SpringBoot集成郵件服務(wù)非常簡單,通過簡單的學習即可快速掌握郵件業(yè)務(wù)類的核心邏輯和企業(yè)郵件的日常服務(wù),本文給大家分享Springboot整合實現(xiàn)郵件發(fā)送的原理,一起看看吧2021-06-06

