1. 程式人生 > >Tomcat 記憶體溢位,堆疊配置各種調整

Tomcat 記憶體溢位,堆疊配置各種調整

部分參說明:

-server:一定要作為第一個引數,在多個CPU時效能佳

-Xms:初始Heap大小,使用的最小記憶體,cpu效能高時此值應設的大一些

-Xmx:java heap最大值,使用的最大記憶體

-XX:PermSize:設定記憶體的永久儲存區域

-XX:MaxPermSize:設定最大記憶體的永久儲存區域

-XX:MaxNewSize:

+XX:AggressiveHeap 會使得 Xms沒有意義。這個引數讓jvm忽略Xmx引數,瘋狂地吃完一個G實體記憶體,再吃盡一個G的swap。

-Xss:每個執行緒的Stack大小

-verbose:gc 現實垃圾收集資訊

-Xloggc:gc.log 指定垃圾收集日誌檔案

-Xmn:young generation的heap大小,一般設定為Xmx的3、4分之一

-XX:+UseParNewGC :縮短minor收集的時間

-XX:+UseConcMarkSweepGC :縮短major收集的時間

提示:此選項在Heap Size 比較大而且Major收集時間較長的情況下使用更合適。

tomcat jvm 記憶體溢位問題的解決

1、首先是:java.lang.OutOfMemoryError: Java heap space

解釋:

JVM堆的設定是指java程式執行過程中JVM可以調配使用的記憶體空間的設定.JVM在啟動的時候會自動設定Heap size的值,其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設定。Heap size 的大小是Young Generation 和Tenured Generaion 之和。

提示:在JVM中如果98%的時間是用於GC且可用的Heap size 不足2%的時候將丟擲此異常資訊。

提示:Heap Size 最大不要超過可用實體記憶體的80%,一般的要將-Xms和-Xmx選項設定為相同,而-Xmn為1/4的-Xmx值。

解決方法:win下

手動設定Heap size

修改TOMCAT_HOME/bin/catalina.bat,在“echo ”Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:

set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

2、其次是:java.lang.OutOfMemoryError: PermGen space

原因:

PermGen space的全稱是Permanent Generation space,是指記憶體的永久儲存區域,這塊記憶體主要是被JVM存放Class和Meta資訊的,Class在被Loader時就會被放到PermGen space中,它和存放類例項(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程式執行期對PermGen space進行清理,所以如果你的應用中有很CLASS的話,就很可能出現PermGen space錯誤,這種錯誤常見在web伺服器對JSP進行pre compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm預設的大小(4M)那麼就會產生此錯誤資訊了。

解決方法:win下

手動設定MaxPermSize大小

修改TOMCAT_HOME/bin/catalina.bat(Linux下為catalina.sh),在“echo ”Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:

set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

catalina.sh加set JAVA_OPTS='-Xms64 -Xmx512'無效解決方案

set JAVA_OPTS='-Xms64 -Xmx512'
上面無效的話這樣寫:
declare -x JAVA_OPTS="-Xms128m -Xmx256"
"declare -x"一定要加,不然就會報-x指令無效,
還有後面的引號也要注意加上 wq後,重啟tomcat即可,ps ax後看到tomcat的程序會變成類似
/opt/jdk1.6.0/bin/java -Xms128m -Xmx256m -Djava.endorsed.dirs=/opt/tomcat/common/e

在windows下,如果使用控制檯的方式,也就是直接執行startup.bat方式啟動,可以通過修改catalina.bat
set JAVA_OPTS=-Xms256m -Xmx512m
注意,linux下有單引號,win下不用,如果加上單引號,tomcat根本起不來。

如下一些問題

java -Xmx1610M -version

java -Xmx1610m -version

網摘的tomcat記憶體溢位解決方案

Tomcat記憶體溢位的原因   在生產環境中tomcat記憶體設定不好很容易出現記憶體溢位。造成記憶體溢位是不一樣的,當然處理方式也不一樣。   這裡根據平時遇到的情況和相關資料進行一個總結。常見的一般會有下面三種情況:   1.OutOfMemoryError: Java heap space   2.OutOfMemoryError: PermGen space   3.OutOfMemoryError: unable to create new native thread.   Tomcat記憶體溢位解決方案   對於前兩種情況,在應用本身沒有記憶體洩露的情況下可以用設定tomcat jvm引數來解決。(-Xms -Xmx -XX:PermSize -XX:MaxPermSize)   最後一種可能需要調整作業系統和tomcat jvm引數同時調整才能達到目的。   第一種:是堆溢位。   原因分析: JVM堆的設定是指java程式執行過程中JVM可以調配使用的記憶體空間的設定.JVM在啟動的時候會自動設定Heap size的值,其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設定。Heap size 的大小是Young Generation 和Tenured Generaion 之和。 在JVM中如果98%的時間是用於GC且可用的Heap size 不足2%的時候將丟擲此異常資訊。 Heap Size 最大不要超過可用實體記憶體的80%,一般的要將-Xms和-Xmx選項設定為相同,而-Xmn為1/4的-Xmx值。   沒有記憶體洩露的情況下,調整-Xms -Xmx引數可以解決。   -Xms:初始堆大小   -Xmx:最大堆大小   但堆的大小受下面三方面影響:   1.相關作業系統的資料模型(32-bt還是64-bit)限制;(32位系統下,一般限制在1.5G~2G;我在2003 server 系統下(實體記憶體:4G和6G,jdk:1.6)測試 1612M,64位作業系統對記憶體無限制。)   2.系統的可用虛擬記憶體限制;   3.系統的可用實體記憶體限制。   堆的大小可以使用 java -Xmx***M version 命令來測試。支援的話會出現jdk的版本號,不支援會報錯。   -Xms -Xmx一般配置成一樣比較好比如set JAVA_OPTS= -Xms1024m -Xmx1024m 其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可 進行設定 例項,以下給出1G記憶體環境下java jvm 的引數設定參考: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true " JAVA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX: NewSize=192m -XX:MaxNewSize=384m" CATALINA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=192m -XX:MaxNewSize=384m" 伺服器為1G記憶體:JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true " 伺服器為64位、2G記憶體: JAVA_OPTS='-server -Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m' -------------------解決方案1:----------------------------- 前提:是執行startup.bat啟動tomcat的方式 Linux伺服器: 在/usr/local/apache-tomcat-5.5.23/bin 目錄下的catalina.sh 新增:JAVA_OPTS='-Xms512m -Xmx1024m' 或者 JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m" 或者 CATALINA_OPTS="-server -Xms256m -Xmx300m" Windows伺服器: 在catalina.bat最前面加入

相關推薦

Tomcat 記憶體溢位堆疊配置各種調整

部分參說明: -server:一定要作為第一個引數,在多個CPU時效能佳 -Xms:初始Heap大小,使用的最小記憶體,cpu效能高時此值應設的大一些 -Xmx:java heap最大值,使用的最大記憶體 -XX:PermSize:設定記憶

tomcat記憶體溢位修改設定。-Xss256m -Xms512m -Xmx800m -XX:MaxPermSize=512m

問題描述: 1. java.lang.OutOfMemoryError: Java heap space          JVM堆的設定是指java程式執行過程中JVM可以調配使用的記憶體空間的設定.JVM在啟動的時候會自動設定Heap

myeclipse啟動tomcat記憶體溢位tomcat記憶體溢位問題解決辦法

        最近專案開發中老是遇到啟動專案後報記憶體溢位,首先我們要確定問題所在,MyEclipse啟動Tomcat無視catalina.bat中設定記憶體大小,所以說如果用myeclipse啟動tomcat記憶體溢位,而tomcat直接啟動不報錯的話,一定是MyEcl

TOMCAT記憶體溢位及大小調整

一、 tomcat記憶體設定問題 收藏     在使用Java程式從資料庫中查詢大量的資料或是應用伺服器(如tomcat、jboss,weblogic)載入jar包時會出現java.lang.OutOfMemoryError異常。這主要是由於應用伺服器的記憶體不足引起的。

Tomcat中JVM記憶體溢位及合理配置

Tomcat本身不能直接在計算機上執行,需要依賴於硬體基礎之上的作業系統和一個Java虛擬機器。Tomcat的記憶體溢位本質就是JVM記憶體溢位,所以在本文開始時,應該先對Java JVM有關記憶體方面的知識進行詳細介紹。 一、Java JVM記憶體介紹 JVM管理兩種

Myeclipse10記憶體溢位tomcat啟動不溢位

myeclipse.ini裡配置後 1、設定Default VM Arguments 在myEclipse中,開啟Windows-> Preferences->Java->Installed JREs->點選正在使用的JDK->Edit-&g

tomcat 配置訪問路徑 server.xml去掉專案名稱 並應對出現tomcat記憶體溢位的情況

 由於本人所在公司開發需求 進行微信開發 伺服器上必須為http://localhost/  80埠的形式 每次更新上伺服器都會有一些小問題 所以特別 把本地配置成伺服器上 訪問路徑一樣 修改tomcat/conf/server.xml 在<Host/

Tomcat報錯—Tomcat記憶體溢位及大小調整

本文記錄一些常見的Tomcat經常出現的記憶體溢位問題,在查詢大量資料和載入jar包出現異常。一般JVM記憶體溢位(OOM),分為堆記憶體溢位和PermGen區記憶體溢位:1:java.lang.Out

tomcat記憶體溢位解決java.lang.OutOfMemoryError: PermGen space

今天遇到了一個java.lang.OutOfMemoryError: PermGen space異常問題,一直解決不了,根據網上修改了tomcat的配置檔案,但是還是解決不了,最後是通過如下方式解決的,解決步驟如下:eclipse–》 window–》show

java 各種記憶體溢位情況與配置解決方法

轉載自:http://blog.csdn.net/sinat_29912455/article/details/51125748  僅供個人學習用,如涉及到版權問題,請聯絡博主、 1、堆記憶體溢位 【情況一】:    Java.lang.OutOfMemoryErro

有關tomcat記憶體溢位的完美解決方法

tomcat記憶體溢位設定JAVA_OPTS 設定Tomcat啟動的初始記憶體 其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可 進行設定 例項,以下給出1G記憶體環境下java

tomcat記憶體溢位問題:java.lang.OutOfMemoryError: PermGen space

1、java啟動時提示: java.lang.OutOfMemoryError: PermGen space 錯誤,百度了一下解決方式, 如果tomcat是以bat方式啟動的,則如下設定: 修改tomcat_home/bin/catalin a.sh 在“echo “

解決Tomcat記憶體溢位問題(java.lang.OutOfMemoryError: PermGen space)

常見原因: jvm記憶體過小 程式不夠嚴謹,產生了過多的辣雞 解決方案: 增加jvm記憶體 步驟: step1:在Servers視窗雙擊使用的tomcat step2:在彈出的視窗中選擇Open launch configurat

記憶體溢位記憶體洩漏記憶體抖動

記憶體溢位,記憶體洩漏,記憶體抖動你都碰到過嗎?怎麼解決的?如何區分這幾種情況?怎麼解決由記憶體洩漏而導致的記憶體溢位? 記憶體優化 . 記憶體洩露 記憶體溢位 記憶體抖動 分析與解決 記憶體溢位和記憶體洩漏的區別、產生原因以及解決方案 一、記憶體溢位: (一)、定義: 記憶體溢

介面資料量太大導致記憶體溢位解決辦法

通常我們使用介面呼叫資料總是返回一段我們需要的資訊,或者是json 格式資訊,通過接收將資料儲存到程式當中,再對接收到的資料進行轉換成對應的模型格式 。目前遇到的問題是接收的資料量過於巨大,導致完整接收將導致記憶體溢位,無法進行接下去的工作 。 解決辦法: 我們將資料儲存到本地檔案 ,再通過

Tomcat 記憶體溢位解決方式

在專案部署過程中經常會出現tomcat記憶體溢位的問題,一下是本人遇到的幾種情況: 注意:linux 與windows 修改的方式不同,具體設定大小根據現場情況。 linux下編輯tomcat的catalina.sh檔案,在第一行的後面增加一句,或者在 echo Using CATALI

什麼情況下會發生堆記憶體溢位記憶體溢位結合例項說明

一、 棧溢位(StackOverflowError) 棧是執行緒私有的,他的生命週期與執行緒相同,每個方法在執行的時候都會建立一個棧幀,用來儲存區域性變量表,運算元棧,動態連結,方法出口燈資訊。區域性變量表又包含基本資料型別,物件引用型別(區域性變量表編譯器完成,執行期間不會

JavaWeb專案本地執行時報了Tomcat記憶體溢位java.lang.OutOfMemoryError

這個錯誤是Tomcat的JVM記憶體不夠了,JVM Heap(堆)溢位 JVM再啟動的時候回自動設定JVM Heap的值,其初始化空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)不可超過實體記憶體。可以利用JVM提供的-Xmn -Xms -Xmx等選項進行設定

linux解決Tomcat記憶體溢位

Tomcat本身不能直接在計算機上執行,需要依賴於作業系統和一個JAVA虛擬機器。JAVA程式啟動時JVM會分配一個初始記憶體和最大記憶體給程式。當程式需要的記憶體超出記憶體的最大值時虛擬機器就會提示記憶體溢位,並且導致應用服務崩潰。 一、常見的Java記憶體溢位有以下三種

Tomcat 記憶體溢位對應解決方式

1.Tomcat記憶體溢位的原因   生產環境中Tomcat記憶體設定不好很容易出現記憶體溢位。造成記憶體溢位是不一樣的,當然處理方式也不一樣。   這裡根據平時遇到的情況和相關資料進行一個總結。常見的一般會有下面三種情況: OutOfMemoryError: Ja