日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat 内存与优化篇

發(fā)布時(shí)間:2025/3/19 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat 内存与优化篇 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Tomcat 內(nèi)存與優(yōu)化
一、Tomcat 運(yùn)行環(huán)境介紹
1.Tomcat 本身無(wú)法直接在計(jì)算機(jī)上運(yùn)行,需要依賴硬件基礎(chǔ)上的操作系統(tǒng)和Java虛擬機(jī);
2.Java 程序啟動(dòng)時(shí)JVM都會(huì)分配一個(gè)初始內(nèi)存和最大內(nèi)存給這個(gè)應(yīng)用;
3.當(dāng)應(yīng)用程序用到最大內(nèi)存的時(shí)刻,就會(huì)觸發(fā)JVM做垃圾回收(GC)動(dòng)作,釋放被占用的內(nèi)存;
4.因此想要調(diào)整Java程序啟動(dòng)時(shí)的初始內(nèi)存和最大內(nèi)存,需要向JVM申請(qǐng);
5.如果初始內(nèi)存大小設(shè)置過(guò)小,且此時(shí)初始化的應(yīng)用對(duì)象過(guò)多,虛擬機(jī)就必須重復(fù)的加載內(nèi)存來(lái)滿足使用;
6.基于以上原因,最好把初始內(nèi)存大小(Xms)和最大內(nèi)存(Xmx)設(shè)置成一樣;
7.JVM上所有的對(duì)象都在"""堆區(qū)(heap)"""上分配內(nèi)存(也有在"棧"上分配內(nèi)存的)
8.堆區(qū)的大小是可以動(dòng)態(tài)擴(kuò)展的,但"""堆"""的大小受限于系統(tǒng)使用的物理內(nèi)存,當(dāng)應(yīng)用程序需要的內(nèi)存超出"堆"的最大值時(shí),JVM虛擬機(jī)就會(huì)拋出內(nèi)存溢出異常,并且導(dǎo)致應(yīng)用程序奔潰;
9.基于以上原因,建議“堆”的大小設(shè)置成物理內(nèi)存的80%

二、Tomcat 內(nèi)存設(shè)置(for Linux)
1.<CATALINA_HOME>/bin/catalina.sh #路徑以及修改內(nèi)存的文件
2.JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m" #內(nèi)存參數(shù)以及值
3.-Xms:初始內(nèi)存大小
4.-Xmx:最大內(nèi)存
5.-Xss:每個(gè)線程所消耗的內(nèi)存大小(如-Xss15120是指每增加一個(gè)線程就會(huì)消耗15M內(nèi)存),最好設(shè)置成128K,默認(rèn)值為512K
6.-XX:PermSize:設(shè)定內(nèi)存的永久保存區(qū)初始大小,默認(rèn)為64M(永久是指方法區(qū)、永久代,還有年輕代、老年代)
7.-XX:MaxPermSize:設(shè)定內(nèi)存永久保存區(qū)最大大小,默認(rèn)為64M
8.其他參數(shù):
a) -XX:SurvivorRatio=2: #生還者池的大小,默認(rèn)是2,如果垃圾回收變成了瓶頸,可以嘗試定制生還者池設(shè)置
b) -XX:NewSize: #新生成的池的初始大小,默認(rèn)為2M
c) -XX:MaxNewSize: #新生成的池的最大大小,默認(rèn)為32M
d) +XX:AggressiveHeap #該參數(shù)會(huì)使得Xms沒(méi)有意義,這個(gè)參數(shù)讓參數(shù)JVM忽略Xmx參數(shù),瘋狂的吃掉一個(gè)G的物理內(nèi)存,再瘋狂的吃掉一個(gè)G的swap
e) -verbose:gc #實(shí)現(xiàn)垃圾收集信息
f) -Xloggc:gc.log #指定來(lái)及收集日志文件
g) -Xmn: #年輕代的堆區(qū)大小,一般設(shè)置成Xmx的3、4分之一
h) -XX:+UseParNewGC #縮短minor收集時(shí)間(minor GC是指在年輕代觸發(fā)的GC垃圾回收動(dòng)作)
I) -XX:+UseConcMarkSweepGC #縮短major收集的時(shí)間(major收集是指在年老代觸發(fā)Full GC垃圾回收動(dòng)作),此選項(xiàng)在heap size(堆區(qū)大小)比較大而且major收集時(shí)間較長(zhǎng)的情況下使用更合適
j) -XX:userParNewGC #可用來(lái)并行收集(多CPU)
k) -XX:ParallerGCThreads #可用來(lái)增加并行度(多CPU)
l) -XX:UseParallerGC #設(shè)置后可以使用并行清理收集器(多CPU)
m) 如果JVM的堆大小大于 1G,則應(yīng)該使用以下配置:
-XX:newSize=640m -XX:MaxNewSize=640m -XX:SurvivorRatio=16
或者將堆的總大小的50%到60%分配給新生成的池,調(diào)大新對(duì)象區(qū),減少Full GC次數(shù)。
9.注意:
a) 虛擬機(jī)的"堆區(qū)大小"決定了虛擬機(jī)花費(fèi)在收集垃圾上的時(shí)間和頻率;
b) 如果"堆的大小"很大,那么執(zhí)行Full GC垃圾回收就會(huì)很慢,但是頻率降低了;
c) 如果把"堆的大小"調(diào)小,執(zhí)行Full GC垃圾收回就會(huì)很快,但是會(huì)更加頻繁;
d) 因此建議把"堆區(qū)大小"設(shè)置物理內(nèi)存的80%左右
e) 建議把內(nèi)存的最高值和最低值的差值縮小。不然會(huì)浪費(fèi)很多內(nèi)存;
f) 最低值加大,那么最高值可以隨便設(shè)置;
g) 但是要根據(jù)實(shí)際的物理內(nèi)存來(lái)設(shè)置,且大于物理內(nèi)存,tomcat就無(wú)法啟動(dòng),可能會(huì)導(dǎo)致內(nèi)存被系統(tǒng)收回,終止進(jìn)程

三、Tomcat 內(nèi)存溢出以及調(diào)整
1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出
  a) 釋義:
    1.JVM在啟動(dòng)的時(shí)刻會(huì)自動(dòng)設(shè)置JVM heap的值,其初始空間(即-Xms)是物理內(nèi)存的1/64,最大空間(-Xmx)不可能超過(guò)物理內(nèi)存;
    2.可以利用JVM提供的 -Xmn -Xms -Xmx等選項(xiàng)進(jìn)行設(shè)置;
    3.heap的大小是年輕代(Young Generation)和年老代(Tenured Generaion)之和;
    4.在JVM中如果98%的時(shí)間用于GC,且可用的heap size不足2%的時(shí)刻將拋出此異常信息;

  b) 解決:
    1.手動(dòng)設(shè)置MaxPermSize的大小
    2.JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m"

2. java.lang.OutOfMemoryError: PermGen space ---- PermGen space溢出
  a) 釋義:
    1.PermGen Space全程是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域;
    2.這里內(nèi)存溢出的原因是因?yàn)檫@塊內(nèi)存主要是被JVM存放class和meta信息的,class在被load的時(shí)刻被放入PermGen Space區(qū)域;
    3.PermGen Space區(qū)域與存放instance的heap區(qū)域不同,GC不會(huì)在主程序運(yùn)行期間對(duì)PermGen Space進(jìn)行清理;
    4.基于以上原因,如果你的APP會(huì)載入很多class的話,就很可能出現(xiàn)PermGen Space溢出;

  b) 解決:
    1.手動(dòng)設(shè)置MaxPermSize大小

3.java.lang.StackOverflowError ---- 棧溢出
  a) 釋義:
    1.JVM采用的是棧式虛擬機(jī),函數(shù)的調(diào)用過(guò)程都體現(xiàn)在堆棧和退棧上;
    2.調(diào)用構(gòu)造函數(shù)的"層"太多了,以至于把棧區(qū)溢出了;

b) 解決:
  1.修改程序

4.ava.lang.OutOfMemoryError: GC overhead limit exceeded?

  a) 這里的意思是指JVM溢出

  b) 增加參數(shù),-XX:-UseGCOverheadLimit,關(guān)閉這個(gè)特性,同時(shí)增加heap大小,-Xmx1024m

轉(zhuǎn)載于:https://www.cnblogs.com/wulaijun/p/5490699.html

總結(jié)

以上是生活随笔為你收集整理的Tomcat 内存与优化篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美不卡一区二区三区 | 久久久男人的天堂 | 亚洲性色视频 | 中文字幕无码乱码人妻日韩精品 | 性欧美大战久久久久久久 | 黑人巨大精品欧美一区二区 | 在线激情网站 | 日韩有码在线播放 | 丰满多毛的大隂户视频 | 国产成人a亚洲精v品无码 | 日本wwwwww| 一级福利片 | 91嫩草香蕉 | 热久久免费视频 | 日本一区二区三区视频在线观看 | 小妹色播影院 | 成人午夜一区二区 | 老湿福利影院 | 午夜久久乐 | 亚洲精品伦理 | 成人做爰66片免费看网站 | 欧美日韩综合精品 | 久久久久综合 | 放几个免费的毛片出来看 | 国产精品宾馆在线精品酒店 | 亚洲免费黄色 | a级淫片 | 伊人网综合在线 | 久久免费精彩视频 | 超碰成人在线免费观看 | 一区在线不卡 | 日日干av| 激情文学久久 | 欧美人妻精品一区二区 | 色88久久久久高潮综合影院 | 日本高清一区二区视频 | 亚洲综合激情在线 | 波多野结衣啪啪 | 欧美日韩在线免费播放 | 9999久久久久| 又黄又爽无遮挡 | 好男人www在线视频 我们的2018在线观看免费高清 | 少妇无套内谢久久久久 | 老鸭窝成人 | 日本乱子伦 | aaa午夜| 黄一区二区三区 | 中国女人内精69xxxxxx | 福利影院av| 成人小视频在线免费观看 | 操少妇视频 | 东北女人啪啪ⅹxx对白 | 国产白袜脚足j棉袜在线观看 | 第一页国产 | 一区二区三区www | 999精品在线视频 | 大桥未久恸哭の女教师 | 韩国一区二区三区在线观看 | 久久精品免费在线 | 成人国产精品入口免费视频 | 全部免费毛片在线播放高潮 | 国产精品国产三级国产aⅴ浪潮 | 久久久久欧美 | 亚洲色成人www永久网站 | 波多野结衣视频播放 | 国产91久久婷婷一区二区 | 高清在线一区二区 | 国产亚洲一区二区三区不卡 | japanese24hdxxxx中文字幕 | 亚洲精品粉嫩小泬 | 久在线观看视频 | 免费视频中文字幕 | 免费欧美视频 | 国产综合精品视频 | 欧美成人午夜剧场 | 国产精品美女高潮无套 | 激情一区 | 国产又粗又猛 | 伊人蕉| 欧美精品久久久 | 134vcc影院免费观看 | 亚州激情 | 亚洲第一大综合区 | 夜夜操夜夜骑 | 国产精品久久久久久人妻精品动漫 | 欧美久久久久久又粗又大 | 亚洲色图p | 亚洲喷水 | 亚洲AV无码成人精品区明星换面 | 国产最爽的乱淫视频国语对白 | 人妻无码久久精品人妻 | 日本欧美不卡 | 久夜精品 | 成人视品 | 国产成人精品一区二区三区免费 | 国产乱人乱偷精品视频a人人澡 | 黄瓜视频色| 中文字幕一区二区三区四区 | 亚洲精品喷潮一区二区三区 |