Tomcat 啟動內存修改


內存修改文件

  • Windows 文件 /bin/catalina.bat
  • Linux 文件 /bin/catalina.sh

方法一

# 設置參數
JAVA_OPTS='-Xms【初始化內存大小】 -Xmx【可以使用的最大內存】'

# Windos 下
set "JAVA_OPTS=-Xms1024m -Xmx1024m"

# Linux 下
JAVA_OPTS="-Xms1024m -Xmx1024m"

方法二

# 環境變量中設置
變量名:JAVA_OPTS
變量值:-Xms256m -Xmx512m

方法三

# 無catalina文件
1、打開tomcatHome//bin//tomcat5w.exe
2、點擊Java選項卡、Initial memory pool和Maximum memory pool.Initial memory pool這個就是初始化設置的內存的大小。
3、Initial memory pool初始內存大小,Maximum memory pool這個是最大內存的大小。設置內存大小。
4.重啟

標注:

另外需要考慮的是Java提供的垃圾回收機制。虛擬機的堆大小決定了虛擬機花費在收集垃圾上的時間和頻度。收集垃圾可以接受的速度與應用有關,應該通過分析實際的垃圾收集的時間和頻率來調整。如果堆的大小很大,那么完全垃圾收集就會很慢,但是頻度會降低。如果你把堆的大小和內存的需要一致,完全收集就很快,但是會更加頻繁。調整堆大小的的目的是最小化垃圾收集的時間,以在特定的時間內最大化處理客戶的請求。在基准測試的時候,為保證最好的性能,要把堆的大小設大,保證垃圾收集不在整個基准測試的過程中出現。   如果系統花費很多的時間收集垃圾,請減小堆大小。一次完全的垃圾收集應該不超過 3-5 秒。如果垃圾收集成為瓶頸,那么需要指定代的大小,檢查垃圾收集的詳細輸出,研究 垃圾收集參數對性能的影響。一般說來,你應該使用物理內存的 80% 作為堆大小。當增加處理器時,記得增加內存,因為分配可以並行進行,而垃圾收集不是並行的。

一個要注意的地方:建議把內存的最高值跟最低值的差值縮小,不然會浪費很多內存的, 最低值加大 ,最高值可以隨便設,但是要根據實際的物理內存 ,如果內存設置太大了,比如設置了512M最大內存,但如果沒有512M可用內存,Tomcat就不能啟動,還有可能存在內存被系統回收,終止進程的情況。

進階修改

Linux:JAVA_OPTS="-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Xms2048m -Xmx2048m"  
Windos:set "JAVA_OPTS=-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Xms2048m -Xmx2048m"

-server:啟用 JDK的 server 版本;
-Xms:Java虛擬機初始化時堆的最小內存,一般與 Xmx配置為相同值,這樣的好處是GC不必再為擴展內存空間而消耗性能;
-Xmx:Java虛擬機可使用堆的最大內存;
-XX:PermSize:Java虛擬機永久代大小;
-XX:MaxPermSize:Java虛擬機永久代大小最大值;

查看內存方法

jmap:觀察運行中的JVM 物理內存的占用情況,包括Heap size , Perm size 等。

# 獲取JAVA 隨機PID號2340,進入tomcat\bin\目錄 使用jmap查看
bin> jmap -heap 2340
# 輸出
Attaching to process ID 3624, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.161-b12

using thread-local object allocation.
Mark Sweep Compact GC

Heap Configuration:
   MinHeapFreeRatio         = 40
   MaxHeapFreeRatio         = 70
   MaxHeapSize              = 1073741824 (1024.0MB)    # 最大內存堆
   NewSize                  = 357892096 (341.3125MB)
   MaxNewSize               = 357892096 (341.3125MB)
   OldSize                  = 715849728 (682.6875MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
New Generation (Eden + 1 Survivor Space):
   capacity = 322109440 (307.1875MB)
   used     = 57648256 (54.9776611328125MB)
   free     = 264461184 (252.2098388671875MB)
   17.89710230162767% used
Eden Space:
   capacity = 286326784 (273.0625MB)
   used     = 22126856 (21.10181427001953MB)
   free     = 264199928 (251.96068572998047MB)
   7.727833104149977% used
From Space:
   capacity = 35782656 (34.125MB)
   used     = 35521400 (33.87584686279297MB)
   free     = 261256 (0.24915313720703125MB)
   99.26988091660944% used
To Space:
   capacity = 35782656 (34.125MB)
   used     = 0 (0.0MB)
   free     = 35782656 (34.125MB)
   0.0% used
tenured generation:
   capacity = 715849728 (682.6875MB)
   used     = 66843680 (63.747100830078125MB)
   free     = 649006048 (618.9403991699219MB)
   9.337669260104825% used

23902 interned Strings occupying 2743376 bytes.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM