自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

巧解Tomcat中JVM內(nèi)存溢出問題

開發(fā) 后端
這里向大家描述一下Tomcat的JVM內(nèi)存溢出問題的解決方法,有一個項目需要把把數(shù)據(jù)庫從mysql移植到oracle,可是當(dāng)把jdbc連接指向oracle的時候,tomcat就連續(xù)拋java.lang.OutOfMemoryError的錯誤。

你對Tomcat 的JVM內(nèi)存溢出問題的解決方法是否了解,這里和大家分享一下,相信本文介紹一定會讓你有所收獲。

tomcat 的JVM內(nèi)存溢出問題的解決

最近在熟悉一個開發(fā)了有幾年的項目,需要把數(shù)據(jù)庫從mysql移植到oracle,首先把jdbc的連接指向mysql,打包放到tomcat里面,可以跑起來,沒有問題,可是當(dāng)把jdbc連接指向oracle的時候,tomcat就連續(xù)拋java.lang.OutOfMemoryError的錯誤,上網(wǎng)google了一下,了解了一下tomcat的運行機制,也解決了問題,share出來,以備查。下面有幾種JVM內(nèi)存溢出的現(xiàn)象和解決方法,請看詳細(xì)介紹。

1、JVM內(nèi)存溢出現(xiàn)象提示一:java.lang.OutOfMemoryError:Javaheapspace

解釋:

Heapsize設(shè)置

JVM堆的設(shè)置是指java程序運行過程中JVM可以調(diào)配使用的內(nèi)存空間的設(shè)置.JVM在啟動的時候會自動設(shè)置Heapsize的值,其初始空間(即-Xms)是物理內(nèi)存的1/64,最大空間(-Xmx)是物理內(nèi)存的1/4??梢岳肑VM提供的-Xmn-Xms-Xmx等選項可進行設(shè)置。Heapsize的大小是YoungGeneration和TenuredGeneraion之和。

提示:在JVM中如果98%的時間是用于GC且可用的Heapsize不足2%的時候?qū)伋龃水惓P畔ⅰ?/p>

提示:HeapSize最大不要超過可用物理內(nèi)存的80%,一般的要將-Xms和-Xmx選項設(shè)置為相同,而-Xmn為1/4的-Xmx值。

解決方法:

手動設(shè)置Heapsize

修改TOMCAT_HOME/bin/catalina.bat,在“echo"UsingCATALINA_BASE:$CATALINA_BASE"”上面加入以下行:
Java代碼 

  1. setJAVA_OPTS=%JAVA_OPTS%-server
  2. -Xms800m-Xmx800m-XX:MaxNewSize=256m 
  3. setJAVA_OPTS=%JAVA_OPTS%-server
  4. -Xms800m-Xmx800m-XX:MaxNewSize=256m 

或修改catalina.sh

在“echo"UsingCATALINA_BASE:$CATALINA_BASE"”上面加入以下行: 

  1. JAVA_OPTS="$JAVA_OPTS-server-Xms800m  
  2. -Xmx800m-XX:MaxNewSize=256m"  

2、JVM內(nèi)存溢出現(xiàn)象提示二:java.lang.OutOfMemoryError:PermGenspace

原因:
PermGenspace的全稱是PermanentGenerationspace,是指內(nèi)存的永久保存區(qū)域,這塊內(nèi)存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGenspace中,它和存放類實例(Instance)的Heap區(qū)域不同,GC(GarbageCollection)不會在主程序運行期對PermGenspace進行清理,所以如果你的應(yīng)用中有很CLASS的話,就很可能出現(xiàn)PermGenspace錯誤,這種錯誤常見在web服務(wù)器對JSP進行precompile的時候。如果你的WEBAPP下都用了大量的第三方j(luò)ar,其大小超過了jvm默認(rèn)的大小(4M)那么就會產(chǎn)生此錯誤信息了。

解決方法:

1.手動設(shè)置MaxPermSize大小

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

  1. setJAVA_OPTS=%JAVA_OPTS%-server
  2. -XX:PermSize=128M-XX:MaxPermSize=512m 
  3.  

“echo"UsingCATALINA_BASE:$CATALINA_BASE"”上面加入以下行: 

  1. setJAVA_OPTS=%JAVA_OPTS%-server  
  2. -XX:PermSize=128M-XX:MaxPermSize=512m 

catalina.sh下為:

Java代碼 

  1. JAVA_OPTS="$JAVA_OPTS-server  
  2. -XX:PermSize=128M-XX:MaxPermSize=512m"  
  3. JAVA_OPTS="$JAVA_OPTS-server  
  4. -XX:PermSize=128M-XX:MaxPermSize=512m"  

【編輯推薦】

  1. JVM內(nèi)存泄漏問題產(chǎn)生及檢測方案
  2. 探究JVM1.6與JVM1.5性能差距
  3. 揭秘Java內(nèi)存泄露與溢出的區(qū)別
  4. 全面認(rèn)識Eclipse中JVM內(nèi)存設(shè)置
  5. JVM啟動參數(shù)中標(biāo)準(zhǔn)參數(shù)列表速查手冊

 

責(zé)任編輯:佚名 來源: lampchina.net
相關(guān)推薦

2021-03-06 10:25:19

內(nèi)存Java代碼

2024-04-25 10:06:03

內(nèi)存泄漏

2021-02-03 15:12:08

java內(nèi)存溢出

2010-09-17 13:45:40

JVM termina

2023-08-29 11:38:27

Java內(nèi)存

2022-03-25 09:01:16

CSS溢出屬性

2010-09-27 10:20:09

JVMLinux

2012-05-15 02:04:22

JVMJava

2010-10-08 15:53:42

2018-05-15 08:44:44

TensorFlowKeras內(nèi)存

2009-07-08 15:31:58

MyEclipse 設(shè)

2009-08-11 09:16:00

2011-12-15 16:55:04

TomcatJavajsp

2019-12-10 08:59:55

JVM內(nèi)存算法

2023-03-03 12:37:50

JavaJVM內(nèi)存溢出

2015-12-28 11:41:57

JVM內(nèi)存區(qū)域內(nèi)存溢出

2009-08-16 16:11:05

2009-07-06 14:35:26

JVM可用內(nèi)存JSP

2020-08-10 17:49:25

JVM內(nèi)存溢出

2011-08-25 10:50:32

SQL Server數(shù)Performance
點贊
收藏

51CTO技術(shù)棧公眾號