1.先了解下JVM內(nèi)存管理機(jī)制,JVM內(nèi)存分為堆內(nèi)存和非堆內(nèi)存
2.JVM內(nèi)存限制
首先JVM內(nèi)存限制于實(shí)際的最大物理內(nèi)存,假設(shè)物理內(nèi)存無(wú)限大的話,JVM內(nèi)存的最大值跟操作系統(tǒng)有很大的關(guān)系。簡(jiǎn)單的說(shuō)就 32位處理器雖然可控內(nèi)存空間有4GB,但是具體的操作系統(tǒng)會(huì)給一個(gè)限制,這個(gè)限制一般是2GB-3GB(一般來(lái)說(shuō)Windows系統(tǒng)下為1.5G- 2G,Linux系統(tǒng)下為2G-3G),而64bit以上的處理器就不會(huì)有限制了
3.示例:(具體情況,具體定吧)
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=64M
-XX:MaxPermSize=128M
4.其他啟動(dòng)參數(shù)設(shè)定:
如果你有一個(gè)雙核的CPU,可以嘗試這個(gè)參數(shù)
-XX:+UseParallelGC
讓GC可以更快的執(zhí)行
-arch [processor architecture]
描述:指定所使用的處理器的類別
舉例:eclipse -arch x86或eclipse -arch sparc
-application [id]
描述:指定要運(yùn)行的應(yīng)用,id為擴(kuò)展org.eclipse.core.applications擴(kuò)展點(diǎn)的插件id加擴(kuò)展id
舉例:例如有個(gè)插件id為edu.sdu.app,擴(kuò)展id為myapp,則eclipse -application edu.sdu.app.myapp,就會(huì)執(zhí)行你的擴(kuò)展應(yīng)用
-clean
描述:清空插件緩存內(nèi)容
舉例:eclipse -clean,有時(shí)插件顯示不出來(lái)是因?yàn)镋clipse將插件進(jìn)行了緩存以加速啟動(dòng)過(guò)程,若指定此參數(shù)則會(huì)清空緩存,從頭加載
-configuration [cofigfile location]
描述:指定配置文件的位置,在啟動(dòng)時(shí)使用此目錄下的配置文件config.ini來(lái)啟動(dòng)
舉例:eclipse -configuration d:/eclipse/configuration
-data [workspace location]
描述:指定啟動(dòng)時(shí)的Workspace位置
舉例:例如Workspace位置設(shè)在D:/myworkspace,則eclipse -data D:/myworkspace
-debug [option file]
描述:以Debug狀態(tài)啟動(dòng)Eclipse,所有的Debug開關(guān)在.options文件中指定
舉例:eclipse -debug d:/eclipse/.options
-dev [classpath entry]
描述:以開發(fā)狀態(tài)啟動(dòng)Eclipse,這會(huì)添加所有指定的路徑作為每個(gè)插件的Classpath
舉例:例如eclipse -dev bin,會(huì)將產(chǎn)生在bin目錄下的所有類加載到類路徑中,這在開發(fā)插件時(shí)非常有用
-nosplash
描述:指定啟動(dòng)時(shí)不顯示閃屏
舉例:eclipse -nosplash
-vm [jre path]
描述:指定啟動(dòng)時(shí)所使用的Java虛擬機(jī)
舉例:例如要使用自己的Java虛擬機(jī),則eclipse -vm D:/j2sdk1.4.2_04/jre/bin/java.exe,這樣還有一個(gè)好處,就是可以開啟一個(gè)Console,能夠顯示控制臺(tái)信息;當(dāng)然若使用eclipse -vm D:/j2sdk1.4.2_04/jre/bin/javaw.exe則不會(huì)再顯示控制臺(tái)
-vmargs [Java VM arguments]
描述:指定啟動(dòng)時(shí)要使用的Java虛擬機(jī)參數(shù)
舉例:例如要指定使用的內(nèi)存容量,則eclipse -vmargs "-Xms256m -Xmx1024m"
注:此參數(shù)一定要放在所有參數(shù)變量的最后面
5.FAQ:
為什么有的機(jī)器我將-Xmx和-XX:MaxPermSize都設(shè)置為512M之后Eclipse可以啟動(dòng),而有些機(jī)器無(wú)法啟動(dòng)?
通過(guò)上面對(duì)JVM內(nèi)存管理的介紹我們已經(jīng)了解到JVM內(nèi)存包含兩種:堆內(nèi)存和非堆內(nèi)存,另外JVM最大內(nèi)存首先取決于實(shí)際的物理內(nèi)存和操作系統(tǒng)。所以說(shuō)設(shè)置VM參數(shù)導(dǎo)致程序無(wú)法啟動(dòng)主要有以下幾種原因:
1) 參數(shù)中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;
2) -Xmx的值和-XX:MaxPermSize的總和超過(guò)了JVM內(nèi)存的最大限制,比如當(dāng)前操作系統(tǒng)最大內(nèi)存限制,或者實(shí)際的物理內(nèi)存等等。
說(shuō)到實(shí)際物理內(nèi)存這里需要說(shuō)明一點(diǎn)的是,如果你的內(nèi)存是1024MB,但實(shí)際系統(tǒng)中用到的并不可能是1024MB,因?yàn)橛幸徊糠直挥布加昧?/p>