eclipse修改jvm參數(shù)調(diào)優(yōu)方法(2種)
本文介紹了eclipse修改jvm參數(shù)調(diào)優(yōu)方法(2種),分享給大家,具體如下:
一般在不對(duì)eclipse進(jìn)行相關(guān)設(shè)置的時(shí)候,使用eclipse總是會(huì)覺(jué)得啟動(dòng)好慢,用起來(lái)好卡,其實(shí)只要對(duì)eclipse的相關(guān)參數(shù)進(jìn)行一些配置,就會(huì)有很大的改善。
有兩種方法:
1、打開(kāi)eclipse配置文件eclipse.ini,更改把-Xmx(其數(shù)值代表jvm可以使用的最大內(nèi)存數(shù))
2. 運(yùn)行java程序時(shí),選擇run->run configuration->arguments,輸入-Xms100M -Xmx800M(-Xms代表jvm啟動(dòng)時(shí)分配的內(nèi)存大小,-Xmx代表可最大分配多少內(nèi)存)。
今天在eclipse 中測(cè)試把文檔轉(zhuǎn)換為圖片的時(shí)候,報(bào)出了下面的錯(cuò)誤:
java.lang.OutOfMemoryError: Java heap space
從上邊的異常信息可以看到,JVM 需要使用的內(nèi)存已經(jīng)超過(guò)了我們分配給虛擬機(jī)可以使用的最大內(nèi)存。所以問(wèn)題就轉(zhuǎn)化為如何設(shè)置eclipse 中jvm 的最大內(nèi)存。
一、嘗試修改Eclipse.ini 文件 (此方法不行)
找到eclipse 目錄下的eclipse.ini 文件,修改下面的內(nèi)容:
-Xms40m -Xmx512m
修改后重啟eclipse ,發(fā)現(xiàn)根本不起作用。經(jīng)過(guò)后來(lái)查閱一些資料,原來(lái)這里設(shè)置的最小內(nèi)存和最大內(nèi)存是不是給JVM 使用的,這個(gè)內(nèi)存值包含了eclipse 自身使用的內(nèi)存。
二、修改jdk 使用內(nèi)存(此方法可行)
找到eclispe 中window->preferences->Java->Installed JRE ,點(diǎn)擊右側(cè)的Edit 按鈕,在編輯界面中的 “Default VM Arguments ”選項(xiàng)中,填入如下值即可。
-Xms64m -Xmx128m
三、修改Run Configurations (此方法可行)
在代碼上右鍵,依次點(diǎn)擊“Run As ”-> “Run Configurations ”,在Arguments 參數(shù)中的“VM arguments:”中填入如下值即可。
-Xms64m -Xmx128m
主要通過(guò)以下的幾個(gè)jvm參數(shù)來(lái)設(shè)置堆內(nèi)存的:
-Xmx512m | 最大總堆內(nèi)存,一般設(shè)置為物理內(nèi)存的1/4 |
-Xms512m | 初始總堆內(nèi)存,一般將它設(shè)置的和最大堆內(nèi)存一樣大,這樣就不需要根據(jù)當(dāng)前堆使用情況而調(diào)整堆的大小了 |
-Xmn192m | 年輕帶堆內(nèi)存,sun官方推薦為整個(gè)堆的3/8 |
堆內(nèi)存的組成 | 總堆內(nèi)存 = 年輕帶堆內(nèi)存 + 年老帶堆內(nèi)存 + 持久帶堆內(nèi)存 |
年輕帶堆內(nèi)存 | 對(duì)象剛創(chuàng)建出來(lái)時(shí)放在這里 |
年老帶堆內(nèi)存 | 對(duì)象在被真正會(huì)回收之前會(huì)先放在這里 |
持久帶堆內(nèi)存 | class文件,元數(shù)據(jù)等放在這里 |
-XX:PermSize=128m | 持久帶堆的初始大小 |
-XX:MaxPermSize=128m | 持久帶堆的最大大小,eclipse默認(rèn)為256m。如果要編譯jdk這種,一定要把這個(gè)設(shè)的很大,因?yàn)樗念?lèi)太多了。 |
四、查詢(xún)當(dāng)前JVM 內(nèi)存代碼
下面是查詢(xún)當(dāng)前JVM 內(nèi)存大小的代碼,可以測(cè)試以上設(shè)置后JVM 的內(nèi)存是否會(huì)變化。增加JVM 內(nèi)存的配置項(xiàng)后,無(wú)需重新啟動(dòng)eclipse 。具體的代碼如下:
public class TestMemory { /** * @param args */ public static void main(String[] args) { System. out .println( " 內(nèi)存信息 :" + toMemoryInfo()); } /** * 獲取當(dāng)前 jvm 的內(nèi)存信息 * * @return */ public static String toMemoryInfo() { Runtime currRuntime = Runtime.getRuntime (); int nFreeMemory = ( int ) (currRuntime.freeMemory() / 1024 / 1024); int nTotalMemory = ( int ) (currRuntime.totalMemory() / 1024 / 1024); return nFreeMemory + "M/" + nTotalMemory +"M(free/total)" ; } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章

通過(guò)AOP攔截Spring?Boot日志并將其存入數(shù)據(jù)庫(kù)功能實(shí)現(xiàn)

IntelliJ IDEA下自動(dòng)生成Hibernate映射文件以及實(shí)體類(lèi)

基于java Files類(lèi)和Paths類(lèi)的用法(詳解)

Spring中一個(gè)少見(jiàn)的引介增強(qiáng)IntroductionAdvisor

Spring Boot使用Druid和監(jiān)控配置方法

springboot詳解實(shí)現(xiàn)車(chē)險(xiǎn)理賠信息管理系統(tǒng)代碼