古詩詞大全網 - 個性簽名 - JAVA查詢數據庫中的錯誤報告內存不足

JAVA查詢數據庫中的錯誤報告內存不足

Jvm和tomcat內存設置

linix系統平臺大並發下tomcat5.5的優化策略(2009-03-1112:45:24)

標簽:linux tomcat5.5優化策略it分類:java

部署系統後,做了壹些工作來提高系統的並發性和響應速度。因此,安排如下。

1.修改server.xml文件

& lt連接器端口="80 "協議="HTTP/1.1 "

maxHttpHeaderSize="8192 "

maxThreads = " 1000 " minSpareThreads = " 75 " maxSpareThreads = " 300 "

enable lookups = " false " redirect port = " 8443 " accept count = " 200 "

connection time out = " 50000 " disableuploadtime out = " true "/& gt;

主要修改了maxThreads和acceptCount。

引用

谷歌數據說,“如果妳想增加並發連接數,妳應該同時增加這兩個參數。web服務器允許的最大連接數也受操作系統內核參數設置的限制,通常Windows為2000左右,Linux為1000。”

2.增加tomcat啟動的初始內存設置;catalina . sh-增加了參數內存設置。

內存為2G:

JAVA _ OPTS = "-server-xms 1500m-xmx 1500m-XSS 256k-DJ ava . awt . headless = true-XX:PermSize = 64M-XX:MaxPermSize = 128m "

(補充:-Dfile.encoding=utf8添加此項以設置文件寫入的編碼方法)

引用

堆大小最多不應超過可用物理內存的80%。通常,應該將-Xms和-Xmx選項設置為相同的值。

堆內存分配

JVM初始分配的內存由-Xms指定,默認為物理內存的1/64;JVM的最大分配內存由-Xmx指定,缺省值是65438+物理內存的0/4。當默認空閑堆內存小於40%時,JVM會將堆增加到最大限制-Xmx;當空閑堆內存超過70%時,JVM會將堆減少到-Xms的最小值。因此,服務器通常將-Xms和-Xmx設置為相等,以避免在每次GC後調整堆的大小。

非堆內存分配

JVM使用-XX:PermSize設置非堆內存的初始值,默認為物理內存的1/64;非堆內存的最大大小由XX:MaxPermSize設置,默認為65438+物理內存的0/4。

JVM內存限制(最大值)

首先,JVM內存受限於實際的最大物理內存。假設物理內存是無限的,最大JVM內存和操作系統有很大的關系。簡單來說,雖然32位處理器的可控內存空間是4GB,但具體操作系統會給出壹個限制,壹般是2GB-3GB(壹般Windows系統是1.5G-2G,Linux系統是2G-3G),但64bit以上的處理器不會有限制。

-Djava.awt.headless=true

Java在圖形處理中使用本地圖形處理庫。使用Java進行圖形處理(比如圖像縮放、圖像簽名、報表生成)時,如果運行在windows上就不會有問題。如果將程序移植到Linux/Unix上,可能會出現圖形無法顯示的錯誤。提示信息:“無法連接x 11窗口服務器”這是因為Linux的圖形處理需要壹個X服務器。解決方法是設置參數。

Xss:每個線程的堆棧大小。堆棧的大小限制了線程的數量。如果堆棧太大,會導致內存溢出。-Xss參數確定堆棧大小,例如,-Xss1024K。如果棧太小,也會導致棧溢出。

Tomcat是如何增加內存的?

轉載修改方法開始

打開bin目錄,找到catalina.bat(windows系統)或者catalina.sh(linux系統),用#在前面壹堆註釋結束後添加如下配置。

窗口:

set CATALINA _ OPTS = "-server-xms 256m-xmx 256m-XX:PermSize = 64M-XX:MaxNewSize = 256m-XX:MaxPermSize = 128m "

Linux:

JAVA _ OPTS = = '-server-xms 256m-xmx 256m-XX:PermSize = 64M-XX:MaxNewSize = 256m-XX:MaxPermSize = 128m '

重印修改方法結束

獎勵:3發布日期:2008年8月-14提問者:rihoonet(初級程序員)

& lt& gt獵頭職位:北京:北京某知名手機網站,招聘高級java程序員。

錯誤:java.lang .內存不足錯誤:java堆空間

TOMCAT版本5.5.23

試過的方法。

/tomcat/bin/catalina.bat添加以下命令:

set Java _ opts =-xms32m-xmx 1024m-啟動不了。。奇怪。

采用的答案

2008-08-14小瘋狂(高級程序員)

Java代碼

set JAVA _ OPTS =-Xms32m-xmx 1024m % JAVA _ OPTS %

set JAVA_OPTS =-xms32m-xmx 1024m % JAVA _ OPTS %,應該引用原JAVA _ OPTS,否則會覆蓋原。

增加Tomcat虛擬內存大小

-

JVM大小設置(unix平臺上的tomcat):調整文件$ catalina _ home \ bin \ catalina.sh。

elif[" $ 1 " = " start "];然後

變化

觸摸" $ CATALINA _ BASE "/logs/CATALINA . out

if[" $ 1 " = "-security "];然後

回顯“使用安全管理器”

變化

" $ _ run JAVA " $ JAVA _ OPTS $ CATALINA _ OPTS \

-DJ ava . approved . dirs = " $ JAVA _ approved _ DIRS "-class path " $ class path " \

-Djava.security.manager \

-DJ ava . security . policy = = " $ CATALINA _ BASE "/conf/CATALINA . policy \

-dcatalina . BASE = " $ CATALINA _ BASE " \

-dcatalina . HOME = " $ CATALINA _ HOME " \

-DJ ava . io . TMPDIR = " $ CATALINA _ TMPDIR " \

org . Apache . catalina . startup . bootstrap " $ @ " start \

& gt& gt" $ CATALINA _ BASE "/logs/CATALINA . out 2 & gt;& amp1。

其他

" $ _ run JAVA " $ JAVA _ OPTS-xms 1024m-xmx 1024m $ CATALINA _ OPTS \

-DJ ava . approved . dirs = " $ JAVA _ approved _ DIRS "-class path " $ class path " \

-dcatalina . BASE = " $ CATALINA _ BASE " \

-dcatalina . HOME = " $ CATALINA _ HOME " \

-DJ ava . io . TMPDIR = " $ CATALINA _ TMPDIR " \

org . Apache . catalina . startup . bootstrap " $ @ " start \

& gt& gt" $ CATALINA _ BASE "/logs/CATALINA . out 2 & gt;& amp1。

船方不負擔裝貨費用

註意紅色部分——-xms 1024m-xmx 1024m+0024m,表示jvm的最小值是1024m,最大值是1024m。這部分的調優需要根據web服務器主機的不同硬件配置進行調整。初始化堆的大小實現了虛擬機在啟動時應用於系統的內存大小。壹般來說,這個參數並不重要。但是,壹些應用程序在高負載下會迅速占用更多內存。這個時候,這個參數就很重要了。如果用於虛擬機啟動的內存相對較小,並且在這種情況下初始化了許多對象,則虛擬機必須重復增加內存以滿足使用。為此,我們壹般將-Xms和-Xmx設置為相同的大小,最大堆大小受系統使用的物理內存的限制。通常,使用大量數據的應用程序將使用持久對象,內存使用量可能會迅速增加。當應用需要的內存超過堆的最大值時,虛擬機會提示內存溢出,導致應用服務崩潰。因此,通常建議將堆的最大值設置為可用內存最大值的80%。

JVM的大小設置(windows平臺上的tomcat):

1)停止當前的Tomcat服務(假設已經啟動)。

net stop "Apache Tomcat 4.1 "

2)卸載Tomcat服務

tomcat.exe-卸載“Apache Tomcat 4.1”

3)重新配置啟動參數。

tomcat.exe-install " Apache Tomcat 4.1 " " % JAVA _ HOME % \ JRE \ bin \ server \ JVM . dll "-DJ ava . class . path = " % CATALINA _ HOME % \ bin \ bootstrap . jar;% JAVA _ HOME % \ lib \ tools . jar "-dcatalina . HOME = " % CATALINA _ HOME % "-Xrs-xmx 512m-xms 512m-start org . Apache . CATALINA . startup . bootstrap-params start-stop org . AP ache . CATALINA . startup . bootstrap-params stop-out " % CATALINA _ HOME % \ logs \ stderr . log "

4)重新啟動服務中的Tomcat服務以完成配置。

紅色部分也是調整jvm大小的地方。調節原理同上。

另外:查看jvm的方法:$ web app \ cache.jsp。需要提醒的是,通過這個頁面,我們可以看到jvm使用的大概大小,通常實際的jvm大小比頁面顯示的要大。

-

秦敏:rem設置JVM內存大小

set JAVA _ OPTS =-xms 800m-xmx 1024m

-

眾所周知,在windows中,當壹個JAVA程序啟動時,JVM會給這個應用程序分配壹個初始內存和壹個最大內存。這個初始內存和最大內存會在壹定程度上影響程序的性能。例如,當應用程序使用最大內存時,JVM應該首先進行垃圾收集,以釋放壹些被占用的內存。

因此,如果要在Tomcat啟動時調整初始內存和最大內存,需要向JVM聲明。壹般JAVA程序在運行時可以通過-Xms -Xmx調整應用程序的初始內存和最大內存:

如:java -Xms64m -Xmx128m a.jar

Tomcat的啟動程序是打包的,不能直接用Java-x...雄貓。*更改內存設置。現在Tomcat正在改變這個設置。

有兩種方法:

1.您需要向環境變量添加兩個屬性,TOMCAT_OPTS,CATALINA_OPTS _ opts。

如set catalina _ opts =-xms 64m-xmx 512m;

Ms最小,mx最大,64m,512m分別指內存容量。

2.修改Catalina.bat文件

在166行下面,每壹行都是“REM execute Java with the applicable properties”。

% _ exec JAVA % % JAVA _ OPTS % % CATALINA _ OPTS % % DEBUG _ OPTS %-DJ ava . approved . dirs = " % JAVA _ approved _ DIRS % "-class path " % class path % "-dcatalina . base = " % CATALINA _ BA Se % "-d CATALINA . home = " % CATALINA _ home % "-DJ ava . io . tmpdir = " % CATALINA _ tmpdir % " % CATALINA _ OPTS %的% main class % % cmd _ line _ args % % action %被替換為-xms64m-。

___________________________________________________________________________________________

Tomcat本身不能直接在電腦上運行,需要依賴壹個基於硬件的操作系統和壹個java虛擬機。您可以根據自己的需要選擇不同的操作系統和相應的JDK版本(只要符合Sun發布的Java規範即可),但我們推薦您使用Sun公司發布的JDK。確保您使用的版本是最新的,因為Sun和其他公司壹直在升級java虛擬機以提高其性能。有報告顯示,JDK1.4與JDK1.3相比,性能提升了近10%到20%。

可以為Java虛擬機設置已用內存,但是如果選擇錯誤,虛擬機不會補償。您可以通過命令行更改虛擬機使用的內存大小。如下表所示,有兩個參數用於設置虛擬機使用的內存大小。

參數

形容

-Xms

JVM初始化堆的大小

-Xmx

JVM堆的最大值

這兩個值的大小壹般根據需要設置。初始化堆的大小實現了虛擬機在啟動時向系統請求的內存大小。壹般來說,這個參數並不重要。但是,壹些應用程序在高負載下會迅速占用更多內存。這個時候,這個參數就很重要了。如果用於虛擬機啟動的內存相對較小,並且在這種情況下初始化了許多對象,則虛擬機必須重復增加內存以滿足使用。為此,我們壹般將-Xms和-Xmx設置為相同的大小,最大堆大小受系統使用的物理內存的限制。通常,使用大量數據的應用程序將使用持久對象,內存使用量可能會迅速增加。當應用需要的內存超過堆的最大值時,虛擬機會提示內存溢出,導致應用服務崩潰。因此,通常建議將堆的最大值設置為可用內存最大值的80%。

Tomcat默認可用內存為128MB,在較大的應用項目中不夠用,需要增加。

在Windows下的/bin/catalina.bat文件和Unix下的/bin/catalina.sh文件之前,添加以下設置:

JAVA_OPTS='-Xms初始化內存大小-Xmx可以使用的最大內存'

這兩個參數的值需要增加。例如:

JAVA _ OPTS = '-xms 256m-xmx 512m '

意味著初始化內存是256MB,可以使用的最大內存是512MB。

另壹個要考慮的是Java提供的垃圾收集機制。虛擬機的堆大小決定了虛擬機收集垃圾的時間和頻率。垃圾收集的可接受速度與應用程序有關,應該通過分析垃圾收集的實際時間和頻率來調整。如果堆很大,完整的垃圾收集會很慢,但是頻率會降低。如果您將堆的大小與內存需求相匹配,那麽完整的收集將會很快,但是會更頻繁。調整堆大小的目的是最大限度地減少垃圾收集的時間,從而在特定時間內最大限度地處理客戶請求。在基準測試中,為了保證最佳的性能,堆的大小應該設置得很大,以保證在整個基準測試過程中不會出現垃圾收集。

如果系統花費大量時間收集垃圾,請減小堆的大小。壹次完整的垃圾收集不應該超過3-5秒。如果垃圾收集成為瓶頸,需要指定代大小,檢查垃圾收集的詳細輸出,研究垃圾收集參數對性能的影響。壹般來說,應該使用80%的物理內存作為堆大小。添加處理器時,記得添加內存,因為分配可以並行完成,但垃圾收集不是並行的。

Tomcat 5的常見優化和配置

1,JDK內存優化:

Tomcat默認可以使用的內存是128 MB。在Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,以下設置被添加到文件{tomcat_home}/bin/catalina.sh之前:

JAVA_OPTS='-Xms[初始化內存大小] -Xmx[可以使用的最大內存]

壹般來說,應該使用80%的物理內存作為堆大小。

2.連接器優化:

在tomcat配置文件server.xml的配置中,與連接數相關的參數有:

最大線程數:

Tomcat使用線程來處理它收到的每個請求。該值表示Tomcat可以創建的最大線程數。默認值為200。

接受計數:

指定當用於處理請求的所有可用線程都被使用時,可以放入處理隊列的請求數。超過此數量的請求將不予處理。默認值是10。

minSpareThreads:

Tomcat初始化期間創建的線程數。默認值為4。

maxSpareThreads:

壹旦創建的線程超過這個值,Tomcat就會關閉不再需要的套接字線程。默認值為50。

啟用查找:

是否反向查詢域名,默認值為真。為了提高處理能力,應該將其設置為false。

連接超時:

網絡連接超時,默認值是60000,以毫秒為單位。設置為0意味著永遠不會超時,這是壹個隱患。通常可以設置為30000毫秒。

maxKeepAliveRequests:

保持請求數,默認值為100。

緩沖區大小:

輸入流緩沖區大小,默認值為2048字節。

壓縮:

壓縮傳輸,值開/關/力,默認值關。

與最大連接數相關的參數是maxThreads和acceptCount。如果要增加並發連接數,應該同時增加這兩個參數。web服務器允許的最大連接數也受到操作系統內核參數設置的限制,Windows通常為2000左右,Linux為1000。

3.如何在tomcat中禁止和允許列目錄中的文件?

在{tomcat_home}/conf/web.xml中,只需將listings參數設置為false,如下所示:

...

清單

錯誤的

...

4.如何在tomcat中禁止和允許主機或IP地址訪問?

...

allow="*.mycompany.com,www . your company . com "/& gt;

deny = " 192.168.1。* "/>;

...

這是我們服務器的配置。具體的文件我給不了妳,因為涉及公司機密,所以給妳,我抄下來了。

JAVA _ OPTS = '-server-xms 512m-xmx 768m-XX:NewSize = 128m-XX:MaxNewSize = 192m-XX:survivor ratio = 8 '