導航:首頁 > 編程語言 > javajar內存

javajar內存

發布時間:2022-12-21 23:37:12

『壹』 java內存溢出主要有哪些類型

主要有三種類型
第一種OutOfMemoryError: PermGen space
發生這種問題的原意是程序中使用了大量的jar或class,使java虛擬機裝載類的空間不夠,與Permanent Generation space有關。解決這類問題有以下兩種辦法:
1. 增加java虛擬機中的XX:PermSize和XX:MaxPermSize參數的大小,其中XX:PermSize是初始永久保存區域大小,XX:MaxPermSize是最大永久保存區域大小。如針對tomcat6.0,在catalina.sh 或catalina.bat文件中一系列環境變數名說明結束處(大約在70行左右) 增加一行:
JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m"
如果是windows伺服器還可以在系統環境變數中設置。感覺用tomcat發布sprint+struts+hibernate架構的程序時很容易發生這種內存溢出錯誤。使用上述方法,我成功解決了部署ssh項目的tomcat伺服器經常宕機的問題。
2. 清理應用程序中web-inf/lib下的jar,如果tomcat部署了多個應用,很多應用都使用了相同的jar,可以將共同的jar移到tomcat共同的lib下,減少類的重復載入。

第二種OutOfMemoryError: Java heap space
發生這種問題的原因是java虛擬機創建的對象太多,在進行垃圾回收之間,虛擬機分配的到堆內存空間已經用滿了,與Heap space有關。解決這類問題有兩種思路:
1. 檢查程序,看是否有死循環或不必要地重復創建大量對象。找到原因後,修改程序和演算法
我以前寫一個使用K-Means文本聚類演算法對幾萬條文本記錄(每條記錄的特徵向量大約10來個)進行文本聚類時,由於程序細節上有問題,就導致了Java heap space的內存溢出問題,後來通過修改程序得到了解決。
2. 增加Java虛擬機中Xms(初始堆大小)和Xmx(最大堆大小)參數的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m

第三種OutOfMemoryError:unable to create new native thread
這種錯誤在Java線程個數很多的情況下容易發生

『貳』 Java程序內存溢出怎麼修改

for循環裡面寫:{
addBatch (你的insert語句 )
這里可以控制1萬條做一次提交
if(i%10000==0) ps.executeBatch();
//清空batch
ps.clearBatch ()
}
這樣就不會頻繁調用insert操作資料庫,100萬也就操作100次提交

『叄』 java內存溢出

使用Java程序從資料庫中查詢大量的數據時出現異常:java.lang.OutOfMemoryError: Java heap space
在JVM中如果98%的時間是用於GC且可用的 Heap size 不足2%的時候將拋出此異常信息。

JVM堆的設置是指java程序運行過程中JVM可以調配使用的內存空間的設置.JVM在啟動的時候會自動設置Heap size的值,其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。
例如:java -jar -Xmn16m -Xms64m -Xmx128m MyApp.jar
如果Heap Size設置偏小,除了這些異常信息外,還會發現程序的響應速度變慢了。GC佔用了更多的時間,而應用分配到的執行時間較少。
Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置為相同,而-Xmn為1/4的-Xmx值。
Heap size的 -Xms -Xmn 設置不要超出物理內存的大小。否則會提示「Error occurred ring initialization of VM Could not reserve enough space for object heap」。

這個問題的根源是jvm虛擬機的默認Heap大小是64M,可以通過設置其最大和最小值來實現.設置的方法主要是幾個.

1.可以在windows 更改系統環境變數加上JAVA_OPTS=-Xms64m -Xmx512m

2,如果用的tomcat,在windows下,可以在C:\tomcat5.5.9\bin\catalina.bat 中加上:
set JAVA_OPTS=-Xms64m -Xmx256m
位置在: rem Guess CATALINA_HOME if not defined 這行的下面加合適.

3.如果是linux系統
Linux 在{tomcat_home}/bin/catalina.sh的前面,加 set JAVA_OPTS='-Xms64 -Xmx512'

『肆』 怎樣增加java執行內存

方法如下:
1、打開eclipse配置文件eclipse.ini,更改把-Xmx(其數值代表jvm可以使用的最大內存數)
2、運行java程序時,選擇run->run configuration->arguments,輸入-Xms100M -Xmx800M(-Xms代表jvm啟動時分配的內存大小,-Xmx代表可最大分配多少內存)。

3、如果修改web伺服器的內存可以通過window->preference->myeclipse->servers->伺服器名稱->伺服器名稱+版本->jdk下面修改內存。
例如:-Xms512m -Xmx1024m -XX:PermSize=256m

『伍』 Linux伺服器運行的java內存問題,怎麼解決

VM內存設置小了 或者一次性讀的數據過大 例如list vertor 一、內存溢出類型 1、java.lang.OutOfMemoryError: PermGen space JVM管理兩種類型的內存,堆和非堆。堆是給開發人員用的上面說的就是,是在JVM啟動時創建;非堆是留給JVM自己用的,用來存放類的信息的。它和堆不同,運行期內GC不會釋放空間。如果web app用了大量的第三方jar或者應用有太多的class文件而恰好MaxPermSize設置較小,超出了也會導致這塊內存的佔用過多造成溢出,或者tomcat熱部署時侯不會清理前面載入的環境,只會將context更改為新部署的,非堆存的內容就會越來越多。 PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到...

『陸』 Java在什麼情況下會內存溢出

1 被生命周期極長的集合類不當持有,號稱是Java內存泄漏的首因。
這些集合類的生命周期通常極長,而且是一個輔助管理性質的對象,在一個業務事務運行完後,如果沒有將某個業務對象主
動的從中清除的話,這個集合就會吃越來越多內存.
2 Scope定義不對,這個很簡單了,方法的局部變數定義成類的變數,類的靜態變數等。
3 異常時沒有加finally{}來釋放某些資源,JDBC時代也是很普遍的事情。
4 另外一些我了解不深的原因,如:Swing里的Listener沒有顯式remove;內部類持有外部對象的隱式引用;Finalizers造成關聯對象沒有被及時清空等。

閱讀全文

與javajar內存相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:485
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163