日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人久久青草 | 秋霞自拍 | 不用播放器的av网站 | 狠狠干2021 | 国产日韩一区二区三区在线观看 | 狠狠干超碰 | 成人午夜免费网站 | 免费成人深夜夜行网站视频 | 国产区二区 | 爱草av | 亚洲综合网址 | 国产黄色一区二区 | 狠狠操2019 | 久久99精品国产麻豆91樱花 | 青青青在线免费 | 男生操女生逼逼 | www..com色 | 亚洲免费视频一区二区三区 | 国产精品久久久精品 | 成人高清在线观看 | 一本色道久久综合亚洲 | 五月天亚洲综合 | 夜夜天天操 | 日本成人免费在线视频 | 黄色免费看视频 | 日韩深夜在线 | 久久精品99国产精品日本 | 操综合网| 蜜臀人妻四季av一区二区不卡 | 免费久久精品视频 | 97国产精品人人爽人人做 | wwwxxx日本人 | 亚洲男人第一天堂 | 免费草逼视频 | 国产一区二区亚洲 | 国产无遮掩| 一区二区xxx | 国产精品久久久久毛片软件 | 国产乱码精品一区二区三区精东 | 国产精品久久9 | 国产香蕉精品 | 欧美18一20男同69gay | www.久久网 | 无码国产精品96久久久久 | 蜜臀av色欲a片无码精品一区 | 成人免费看片'在线观看 | 高h校园不许穿内裤h调教 | 国产精品96久久久久久 | 欧美一区影院 | 少妇视频网站 | 久久久久久久久久成人 | 中国字幕一色哟哟 | 男生和女生一起差差差视频 | 四色永久访问 | 美人被强行糟蹋np各种play | 天天射日日 | 日日夜夜超碰 | 国产精品第七页 | 欧美精品黄色 | 亚洲精品国产精品乱码 | 奴性女会所调教 | 免费在线观看网址 | 特黄特色大片免费播放器使用方法 | 视频一二区 | 成人综合一区二区 | 男人天堂一区二区 | 西方av在线| 91视频中文字幕 | 色涩色 | 91噜噜噜| 欧美一卡二卡三卡四卡 | 女性爱爱视频 | 日本三级视频在线播放 | 久久国产片 | 92av视频| 97久久精品 | 轮乱 | 五月婷婷激情综合网 | 黄色天堂网站 | 成人免费看片载 | 国产又粗又猛 | 久久精品无码一区二区三区毛片 | 欧性猛交ⅹxxx乱大交 | 伊人久久大香网 | 欧美野外猛男的大粗鳮 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | 日日操网站 | 久久麻豆精品 | 国产在线精品一区二区三区 | 老司机午夜免费福利 | 日韩欧美精品在线视频 | 久久一二三区 | 欧美成综合 | 国产精品偷伦视频免费观看了 | 日韩视频在线观看一区二区 | 免费黄片毛片 | 久久精品亚洲 | 欧美精品日韩 | 日韩成人av在线播放 |