java啟動(dòng)如何設(shè)置JAR包內(nèi)存大小
java啟動(dòng)設(shè)置JAR包內(nèi)存大小
親測(cè)可用!
java -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M -jar a.jar
-Xms256m -Xmx512m: 對(duì)象使用的內(nèi)存,也稱(chēng)堆內(nèi)存
PermSize 類(lèi)使用的內(nèi)存,也稱(chēng)永久內(nèi)存
由于Spring-boot內(nèi)置tomcat,默認(rèn)內(nèi)存占用可能很大,最好設(shè)置下jar啟動(dòng)占用的內(nèi)存。
給自己的jar包運(yùn)行時(shí)分配內(nèi)存大小
java -jar -Xms8m -Xmx8m -XX:PermSize=8M -XX:MaxPermSize=16M ?bankmock-0.0.1-SNAPSHOT.jar
說(shuō)明:
Xms:堆內(nèi)存初始大小Xmx:堆內(nèi)存最大值PermSize:永久內(nèi)存初始大小MaxPermSize:永久內(nèi)存最大值
上邊是啟動(dòng)jar包時(shí)設(shè)置的jvm參數(shù);
自己打一個(gè)包,springboot搭建的,打包后40多兆。

當(dāng)我們?cè)趙indows上cmd進(jìn)入啟動(dòng)的時(shí)候,當(dāng)我設(shè)置的啟動(dòng)參數(shù)為:
java -jar -Xms8m -Xmx8m -XX:PermSize=8M -XX:MaxPermSize=16M ?bankmock-0.0.1-SNAPSHOT.jar

會(huì)發(fā)現(xiàn)內(nèi)存溢出了,說(shuō)明我們分配的內(nèi)存不夠,最后我 進(jìn)行多次實(shí)驗(yàn)后,找到了最小值:
java -jar -Xms8m -Xmx16m -XX:PermSize=8M -XX:MaxPermSize=16M ?bankmock-0.0.1-SNAPSHOT.jar?

我們發(fā)現(xiàn)服務(wù)正常啟動(dòng)了。
JVM的一些參數(shù)設(shè)置
#常用的設(shè)置 -Xms:初始堆大小,JVM 啟動(dòng)的時(shí)候,給定堆空間大小。 -Xmx:最大堆大小,JVM 運(yùn)行過(guò)程中,如果初始堆空間不足的時(shí)候,最大可以擴(kuò)展到多少。 -Xmn:設(shè)置堆中年輕代大小。整個(gè)堆大小=年輕代大小+年老代大小+持久代大小。 -XX:NewSize=n 設(shè)置年輕代初始化大小大小 -XX:MaxNewSize=n 設(shè)置年輕代最大值 -XX:NewRatio=n 設(shè)置年輕代和年老代的比值。如: -XX:NewRatio=3,表示年輕代與年老代比值為 1:3,年輕代占整個(gè)年輕代+年老代和的 1/4 -XX:SurvivorRatio=n 年輕代中 Eden 區(qū)與兩個(gè) Survivor 區(qū)的比值。注意 Survivor 區(qū)有兩個(gè)。8表示兩個(gè)Survivor :eden=2:8 ,即一個(gè)Survivor占年輕代的1/10,默認(rèn)就為8 -Xss:設(shè)置每個(gè)線程的堆棧大小。JDK5后每個(gè)線程 Java 棧大小為 1M,以前每個(gè)線程堆棧大小為 256K。 -XX:ThreadStackSize=n 線程堆棧大小 -XX:PermSize=n 設(shè)置持久代初始值 -XX:MaxPermSize=n 設(shè)置持久代大小 -XX:MaxTenuringThreshold=n 設(shè)置年輕帶垃圾對(duì)象最大年齡。如果設(shè)置為 0 的話,則年輕代對(duì)象不經(jīng)過(guò) Survivor 區(qū),直接進(jìn)入年老代。 #下面是一些不常用的 -XX:LargePageSizeInBytes=n 設(shè)置堆內(nèi)存的內(nèi)存頁(yè)大小 -XX:+UseFastAccessorMethods 優(yōu)化原始類(lèi)型的getter方法性能 -XX:+DisableExplicitGC 禁止在運(yùn)行期顯式地調(diào)用System.gc(),默認(rèn)啟用 -XX:+AggressiveOpts 是否啟用JVM開(kāi)發(fā)團(tuán)隊(duì)最新的調(diào)優(yōu)成果。例如編譯優(yōu)化,偏向鎖,并行年老代收集等,jdk6紙之后默認(rèn)啟動(dòng) -XX:+UseBiasedLocking 是否啟用偏向鎖,JDK6默認(rèn)啟用 -Xnoclassgc 是否禁用垃圾回收 -XX:+UseThreadPriorities 使用本地線程的優(yōu)先級(jí),默認(rèn)啟用 等等等......
小結(jié)一下:
我們?cè)谧约洪_(kāi)發(fā)項(xiàng)目的時(shí)候,需要部署到服務(wù)器上,那么運(yùn)維人員會(huì)問(wèn)你,你的項(xiàng)目需要多大內(nèi)存才能啟動(dòng)起來(lái)呀,有的人就說(shuō)管他的,越大越好,隨便開(kāi)口就說(shuō)1024M,2048M等等,其實(shí)我們自己在本地測(cè)試一下就知道了呀
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringMVC DispatcherServlet組件實(shí)現(xiàn)解析
這篇文章主要介紹了SpringMVC DispatcherServlet組件實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
SpringBoot異步處理的四種實(shí)現(xiàn)方式
本篇文章我們以SpringBoot中異步的使用(包括:異步調(diào)用和異步方法兩個(gè)維度)來(lái)進(jìn)行講解,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結(jié)
這篇文章主要介紹了Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結(jié)的相關(guān)資料,需要的朋友可以參考下2016-06-06
Java將本地項(xiàng)目部署到Linux服務(wù)器的實(shí)踐
本文主要介紹了Java將本地項(xiàng)目部署到Linux服務(wù)器的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>2022-06-06
解決IDEA2020 創(chuàng)建maven項(xiàng)目沒(méi)有src/main/java目錄和webapp目錄問(wèn)題
這篇文章主要介紹了IDEA2020 創(chuàng)建maven項(xiàng)目沒(méi)有src/main/java目錄和webapp目錄問(wèn)題解決方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
Springboot整合實(shí)現(xiàn)郵件發(fā)送的原理詳解
SpringBoot集成郵件服務(wù)非常簡(jiǎn)單,通過(guò)簡(jiǎn)單的學(xué)習(xí)即可快速掌握郵件業(yè)務(wù)類(lèi)的核心邏輯和企業(yè)郵件的日常服務(wù),本文給大家分享Springboot整合實(shí)現(xiàn)郵件發(fā)送的原理,一起看看吧2021-06-06

