處理Java中OutOfMemoryError的成績。本站提示廣大學習愛好者:(處理Java中OutOfMemoryError的成績)文章只能為提供參考,不一定能成為您想要的結果。以下是處理Java中OutOfMemoryError的成績正文
今朝為止,我碰到應用Tomcat有三種情形:第一,應用Eclipse,在Eclipse中設置裝備擺設Tomcat。第二,直接在Tomcat中安排項目。第三將Tomcat裝置為windows辦事。
在這三種情形下,湧現OutOfMemoryError.該怎樣處理呢?這裡我不能不提我被網上那些不擔任任的文章害得很慘。各類設置內存的辦法都試了,可就是不起感化。上面我說的這幾種辦法都是我親身實驗過的,沒有成績。
第一種情形:
如圖:我用白色框框出來的。個中Xms和Xmx是增長java虛擬機初始堆年夜小和最年夜堆年夜小參數,重要是處理因為Java Heap Space缺乏形成的緣由。XX:PermSize和XX:MaxPermSize是增長初始永遠保留區域年夜小和最年夜永遠保留區域年夜小的參數,重要處理法式中應用了年夜量的jar或class,java虛擬機裝載類的空間不敷,與Permanent Generation space有關。
第二種情形:
直接把編譯好的項目放在Tomcat中,采取startup.bat啟動Tomcat辦事。以下在Tomca的bin文件夾下:
這類情形下,我們要修正catalina.bat外面的參數。翻開它。找到這兩句:
rem Guess CATALINA_HOME if not defined
set "CURRENT_DIR=%cd%"
在這兩句之上加上這句,必定要之上:set "JAVA_OPTS=-Xms512M -Xmx1024M -XX:PermSize=256m -XX:MaxPermSize=512m"
網上許多相似的,然則試過很多多少都不可,必定要留意:它的地位,和引號等細節。
第三種情形:
假如你的tomcat是注冊為windows辦事而且是以辦事方法啟動的,那末下面的辦法就有效了,由於這時候tomcat啟動是讀取注冊表的參數,而不是讀取批處置文件的參數,這時候我們來如許設置jvm參數。:在Tomcat的bin目次下找到tomcat7w.exe,翻開:
在java選項下:下方的Initial memory pool就是初始化堆內存年夜小,Maximun memory pool是最年夜堆內存年夜小。而要設置Perm Gen池的年夜小就要在Java Option外面加參數了,在外面加上:
-Dcatalina.base=%tomcat_home%
-Dcatalina.home=%tomcat_home%
-Djava.endorsed.dirs=%tomcat_home%\endorsed
-Djava.io.tmpdir=%tomcat_home%\temp
-XX:PermSize=256M
-XX:MaxPermSize=256M
-XX:ReservedCodeCacheSize=48M
-Duser.timezone=GMT+08
(每行前面不要有空格)這類辦法我試過了,管用呢。還可以經由過程直接在注冊表中添加參數。這個就不引見了,本身沒試過。
其實處理Tomcat內存的成績其實不難,可貴是你怎樣曉得這是因為Tomcat內存溢出異常形成的。我們之前在這個成績上困擾了很久。假如應用Eclipse,console裡會打印失足誤信息,那末直接便可以斷定是OutOfMemoryError,假如是直接安排到Tomcat中,以startup.bat啟動,則也能夠看到打印出來的毛病信息。可是我們恰恰是把Tomcat辦事裝置成了Windows的辦事,那末看不就任何毛病的提醒。項目啟動後,一向都處於期待狀況,很慢很慢,讓人摸不著腦筋, 正遇上數據庫也弄罷工,就一向認為是數據庫成績。總之一句話:經歷缺乏。
以上就是關於處理Java中OutOfMemoryError的全體內容,願望對年夜家的進修有所贊助。