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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

为myeclipse分配更大的内存

發(fā)布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为myeclipse分配更大的内存 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在進(jìn)行開發(fā)大項目時,常常會遇見開發(fā)工具卡頓的情況 ,大多數(shù)都是因為內(nèi)存不夠的原因造成的,今天學(xué)習(xí)了為MyEclipse分配更大內(nèi)存的方法。是通過修改配置文件實現(xiàn)的。

一:修改myeclipse.ini文件

首先找到MyEclipse的安裝目錄

打開myeclipse的配置文件 如圖選中文件

文檔最后三行可以更改數(shù)字 根據(jù)本機(jī)自帶物理內(nèi)存的大小 采用1/4或者1/3適當(dāng)修改

最需要注意的是:在修改完成后第一次啟動編譯器需要在安裝根目錄下啟動.exe,不要通過快捷方式啟動,否則修改失敗

其三項分別含義為:

-Xms 初始空間 默認(rèn)為物理內(nèi)存的1/64 -Xmx 最大空間 默認(rèn)為物理內(nèi)存的1/4 (建議最大不要超過可用物理內(nèi)存的80%) -Xmn 新增空間 默認(rèn)為1/4的-Xmx

在提到通過修改myeclipse.ini文件中參數(shù)-Xms,-Xmx,-PerSize的值時,這幾個參數(shù)具體是指什么?在網(wǎng)上搜集了一些資料,現(xiàn)整理如下:
這涉及到JVM的內(nèi)存管理機(jī)制。
1.堆(Heap)和非堆(Non-heap)內(nèi)存
按照官方的說法:“Java 虛擬機(jī)具有一個堆,堆是運(yùn)行時數(shù)據(jù)區(qū)域,所有類實例和數(shù)組的內(nèi)存均從此處分配。堆是在 Java 虛擬機(jī)啟動時創(chuàng)建的。”“在JVM中堆之外的內(nèi)存稱為非堆內(nèi)存(Non-heap memory)”。可以看出JVM主要管理兩種類型的內(nèi)存:堆和非堆。簡單來說堆就是Java代碼可及的內(nèi)存,是留給開發(fā)人員使用的;非堆就是JVM留給自己用的,所以方法區(qū)、JVM內(nèi)部處理或優(yōu)化所需的內(nèi)存(如JIT編譯后的代碼緩存)、每個類結(jié)構(gòu)(如運(yùn)行時常數(shù)池、字段和方法數(shù)據(jù))以及方法和構(gòu)造方法的代碼都在非堆內(nèi)存中。

2.堆內(nèi)存分配
JVM初始分配的內(nèi)存由-Xms指定,默認(rèn)是物理內(nèi)存的1/64;JVM最大分配的內(nèi)存由-Xmx指定,默認(rèn)是物理內(nèi)存的1/4。默認(rèn)空余堆內(nèi)存小于40%時,JVM就會增大堆直到-Xmx的最大限制;空余堆內(nèi)存大于70%時,JVM會減少堆直到-Xms的最小限制。因此服務(wù)器一般設(shè)置-Xms、-Xmx相等以避免在每次GC 后調(diào)整堆的大小。
3.非堆內(nèi)存分配
JVM使用-XX:PermSize設(shè)置非堆內(nèi)存初始值,默認(rèn)是物理內(nèi)存的1/64;由XX:MaxPermSize設(shè)置最大非堆內(nèi)存的大小,默認(rèn)是物理內(nèi)存的1/4。
4.JVM內(nèi)存限制(最大值)
首先JVM內(nèi)存限制于實際的最大物理內(nèi)存,假設(shè)物理內(nèi)存無限大的話,JVM內(nèi)存的最大值跟操作系統(tǒng)有很大的關(guān)系。簡單的說就32位處理器雖然可控內(nèi)存空間有4GB,但是具體的操作系統(tǒng)會給一個限制,這個限制一般是2GB-3GB(一般來說Windows系統(tǒng)下為1.5G-2G,Linux系統(tǒng)下為2G-3G),而64bit以上的處理器就不會有限制了。

舉例說明含義:
-Xms128m 表示JVM Heap(堆內(nèi)存)最小尺寸128MB,初始分配
-Xmx512m 表示JVM Heap(堆內(nèi)存)最大允許的尺寸256MB,按需分配。
說明:如果-Xmx不指定或者指定偏小,應(yīng)用可能會導(dǎo)致java.lang.OutOfMemory錯誤,此錯誤來自JVM不是Throwable的,無法用try…catch捕捉。

PermSize和MaxPermSize指明虛擬機(jī)為java永久生成對象(Permanate generation)如,class對象、方法對象這些可反射(reflective)對象分配內(nèi)存限制,這些內(nèi)存不包括在Heap(堆內(nèi)存)區(qū)之中。
-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允許分配尺寸,按需分配
過小會導(dǎo)致:java.lang.OutOfMemoryError: PermGen space
MaxPermSize缺省值和-server -client選項相關(guān)。-server選項下默認(rèn)MaxPermSize為64m
-client選項下默認(rèn)MaxPermSize為32m

PS:不同廠家的jdk垃圾回收算法不一樣。在sun的jdk下,Xms和Xmx設(shè)置一樣,可以減輕伸縮堆大小帶來的壓力,但在ibm的jdk下面,設(shè)置為一樣會增大堆碎片產(chǎn)生的幾率。
下面再簡單的整理一下優(yōu)化MyEclipse速度的主要方法:
1.修改myeclipse.ini。
2.取消自動validation
3.勾掉無用插件。
4.修改啟動加載模塊

二:設(shè)置Default VM Arguments

在myEclipse中,打開Windows-> Preferences->Java->Installed JREs->點(diǎn)擊正在使用的JDK->Edit->Default VM Arguments文本框中輸入:-Xms64m -Xmx256m

三:如果是web工程還報內(nèi)存溢出,可能就要設(shè)置tomcat內(nèi)存。

(1)tomcat的安裝根目錄%tomcat%bin/catalina.bat文件,SET JAVA_OPTS 一行;
set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m
里面的值可以根據(jù)項目的具體情況和機(jī)器的具體情況作調(diào)整

(2)myeclipse配置web服務(wù)器配置 Window—Preferences—Myeclipse—Servers—tomcat 5.x—JDK的Optional Java VM arguments配置為:

-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

四:如果是debug模式運(yùn)行,需要調(diào)整debug的虛擬機(jī)參數(shù),因為debug模式的默認(rèn)內(nèi)存分配時很少的。

五:如果是eclipse跑junit測試遇到內(nèi)存問題

進(jìn)行運(yùn)行全部的測試用例的時候發(fā)現(xiàn)不能運(yùn)行完了,到了后面的一些測試用例的時候出現(xiàn)OutOfMemoryError,是junit導(dǎo)致的,因為teardown并沒有清理掉使用過的內(nèi)存,只能修改Run的時候的參數(shù),把內(nèi)存加大。
Eclipse啟動JUnit的時候設(shè)置的值大概是64M左右,而我加大內(nèi)存后監(jiān)控內(nèi)存使用的結(jié)果表明全部的測試用例需要使用100M內(nèi)存。
方法為:Run->Run…->JUnit->AllTests->(x)=Arguments->VM Arguments: -Xmx500m
注意上面的AllTests為自己要修改的那個包含全部測試用例的Test suite的類。

-Xmn是年輕代,一般不要超過堆大小(-Xms和-Xmx)的一半

總結(jié)

以上是生活随笔為你收集整理的为myeclipse分配更大的内存的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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