日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

bat java 指定堆大小_jvm 堆内存 栈内存 大小设置 查看堆大小

發(fā)布時(shí)間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bat java 指定堆大小_jvm 堆内存 栈内存 大小设置 查看堆大小 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.在eclipse設(shè)置JVM參數(shù)

打開(kāi)eclipse-窗口-首選項(xiàng)-Java-已安裝的JRE(對(duì)在當(dāng)前開(kāi)發(fā)環(huán)境中運(yùn)行的java程序皆生效,也就是在eclipse中運(yùn)行的java程序)編輯當(dāng)前使用的JRE,在缺省VM參數(shù)中輸入:

-Xmx1024m -Xms1024m -Xmn256m -Xss16m

或者在運(yùn)行一個(gè)java程序的時(shí)候執(zhí)行:

java?-Xmx1024m

-Xms1024m -Xmn256m -Xss16m? Test

Test是一個(gè)class文件。

2. 在Tomcat服務(wù)器上設(shè)置JVM參數(shù)

set CATALINA_OPTS=-Xmx512m -Xms512m -Xmn64m -Xss2m??或者

set JAVA_OPTS=-Xmx512m -Xms512m -Xmn64m -Xss2m

設(shè)置CATALINA_OPTS 和??JAVA_OPTS都是一個(gè)道理,在啟動(dòng)tomcat的時(shí)候設(shè)置參數(shù)。

兩者區(qū)別是JAVA_OPTS在tomcat停止的時(shí)候也會(huì)執(zhí)行這個(gè)命令。

注意:Tomcat分為安裝版(*.exe)和非安裝版或者解壓版(*.zip),個(gè)人還是比較喜歡解壓版。兩者雖然在功能上沒(méi)有什么區(qū)別,但是在設(shè)置上還是有要注意的地方。這里只談JVM設(shè)置要注意的地方。

安裝版:windows的服務(wù)會(huì)有一個(gè)tomcat服務(wù),當(dāng)啟動(dòng)服務(wù)的時(shí)候Tomcat會(huì)從注冊(cè)表讀取JVM的參數(shù)。也就是說(shuō)當(dāng)在tomcat的lib文件夾下catalina.bat或者startup.bat中設(shè)置JVM參數(shù)是無(wú)效的。解決辦法:設(shè)置tomcat的注冊(cè)表;或者使用startup.bat啟動(dòng)tomcat。

解壓版:當(dāng)點(diǎn)擊startup.bat時(shí),它會(huì)讀取catalina.bat中的配置,不管在startup.bat文件還是在catalina.bat文件中設(shè)置JVM參數(shù),都會(huì)讀取JVM參數(shù)。

3. ?查看堆的大小

在程序中查看,返回值單位是字節(jié),當(dāng)然還有其他JVM參數(shù)可以查看。

Runtime.getRuntime().maxMemory();

或者在命令行 執(zhí)行jvisualvm 命令

或者%java_home%\bin 目錄下點(diǎn)擊jvisualvm.exe

或者在命令行執(zhí)行jconsole 命令

或者%java_home%\bin 目錄下點(diǎn)擊jconsole.exe

4. java內(nèi)存可以分為堆內(nèi)存和非堆內(nèi)存

堆和非堆:堆是給開(kāi)發(fā)人員用的,是在JVM啟動(dòng)時(shí)創(chuàng)建; 非堆是留給JVM自己用的,用來(lái)存放類型(類和接口)的信息。它和堆不同,運(yùn)行期內(nèi)GC不會(huì)釋放空間。如果web app用了大量的第三方j(luò)ar或者應(yīng)用有太多的class文件而恰好MaxPermSize設(shè)置較小,超出了也會(huì)導(dǎo)致這塊內(nèi)存的占用過(guò)多造成溢出,或者 tomcat熱部署時(shí)侯不會(huì)清理前面加載的環(huán)境,只會(huì)將context更改為新部署的,非堆存的內(nèi)容就會(huì)越來(lái)越多,熱部署上幾次就java.lang.OutOfMemoryError:

PermGen space .

---- 堆內(nèi)存設(shè)置:程序可以到達(dá)的,可以操作的

-Xms 初始堆內(nèi)存 默認(rèn)物理內(nèi)存1/64,也是最小分配堆內(nèi)存。當(dāng)空余堆內(nèi)存小于40%時(shí),會(huì)增加到-Xms的最大限制

-Xmx 最大堆內(nèi)存分配 默認(rèn)物理內(nèi)存1/4,當(dāng)空余堆內(nèi)存大于70%時(shí),會(huì)減小到-Xms的最小限制。

一般設(shè)置 -Xms和Xms大小相等

---- 非堆內(nèi)存設(shè)置

-XX:PermSize 非堆內(nèi)存的初始值,默認(rèn)物理內(nèi)存的1/64 ,也是最小非堆內(nèi)存。

-XX:MaxPermSize 非堆內(nèi)存最大值,默認(rèn)物理內(nèi)存的1/4,

5. 典型JVM參數(shù)設(shè)置:

java -Xmx128m -Xms128m -Xmn64m -Xss1m

-Xmx128m:設(shè)置JVM最大可用內(nèi)存為128M。

-Xms128m:設(shè)置JVM最小內(nèi)存為128m。此值可以設(shè)置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內(nèi)存。

-Xmn2g:設(shè)置年輕代大小為2G。整個(gè)堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m,所以增大年輕代后,將會(huì)減小年老代大小。此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的3/8。

-Xss128k:設(shè)置每個(gè)線程的堆棧大小。 JDK5.0以后每個(gè)線程堆棧大小為1M,以前每個(gè)線程堆棧大小為256K。根據(jù)應(yīng)用的線程所需內(nèi)存大小進(jìn)行調(diào)整。在相同物理內(nèi)存下,減小這個(gè)值能生成更 多的線程。但是操作系統(tǒng)對(duì)一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的,不能無(wú)限生成,經(jīng)驗(yàn)值在3000~5000左右。

-- Ratio 英音:['reiseu] 比率

-- Eden 伊甸

-- Survivor 幸存者

java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0

-XX:NewRatio=4:設(shè)置年輕代(包括Eden和兩個(gè)Survivor區(qū))與年老代的比值(除去持久代)。設(shè)置為4,則年輕代與年老代所占比值為1:4,年輕代占整個(gè)堆棧的1/5

-XX:SurvivorRatio=4:設(shè)置年輕代中Eden區(qū)與Survivor區(qū)的大小比值。設(shè)置為4,則兩個(gè)Survivor區(qū)與一個(gè)Eden區(qū)的比值為2:4,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/6

-XX:MaxPermSize=16m:設(shè)置持久代大小為16m。

-XX:MaxTenuringThreshold=0:設(shè)置垃圾最大年齡。如果設(shè)置為0的話,則年輕代對(duì)象不經(jīng)過(guò)Survivor區(qū),直接進(jìn)入年老代。

對(duì)于年老代比較多的應(yīng)用,可以提高效率。如果將此值設(shè)置為一個(gè)較大值,則年輕代對(duì)象會(huì)在Survivor區(qū)進(jìn)行多次復(fù)制,這樣可以增加對(duì)象再年輕代的存活時(shí)間,增加在年輕代即被回收的概論。

總結(jié)

以上是生活随笔為你收集整理的bat java 指定堆大小_jvm 堆内存 栈内存 大小设置 查看堆大小的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。