Tomcat面試題匯總


詳見:Tomcat 面試題匯總:https://blog.csdn.net/qq_25934401/article/details/81536958

1、Tomcat的缺省端口是多少,怎么修改?

tomcat默認的端口是8080,還會占用8005,8009和8443端口。

進入tomcat安裝目錄,編輯文件“安裝目錄\apache-tomcat-7.0.6\conf\server.xml”(可以用記事本打開) 

2、tomcat容器是如何創建servlet類實例?用到了什么原理?

當容器啟動時,會讀取在webapps目錄下所有的web應用中的web.xml文件,然后對xml文件進行解析,

並讀取servlet注冊信息。然后,將每個應用中注冊的servlet類都進行加載,並通過反射的方式實例化。

(有時候也是在第一次請求時實例化)在servlet注冊時加上如果為正數,則在一開始就實例化,

如果不寫或為負數,則第一次請求實例化。

3.內存調優

內存方式的設置是在catalina.sh,在catalina.bat中,調整一下JAVA_OPTS變量即可,因為后面的啟動參數會把JAVA_OPTS作為JVM的啟動參數來處理。
具體設置如下: JAVA_OPTS="$JAVA_OPTS -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4"
其各項參數如下:
-Xmx3550m:設置JVM最大可用內存為3550M。

-Xms3550m:設置JVM促使內存為3550m。此值可以設置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內存。

-Xmn2g:設置年輕代大小為2G。整個堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m,所以增大年輕代后,將會減小年老代大小。
此值對系統性能影響較大,Sun官方推薦配置為整個堆的3/8。

-Xss128k:設置每個線程的堆棧大小。JDK5.0以后每個線程堆棧大小為1M,以前每個線程堆棧大小為256K。更具應用的線程所需內存大小進行調整。
在相同物理內存下,減小這個值能生成更多的線程。但是操作系統對一個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右。

-XX:NewRatio=4:設置年輕代(包括Eden和兩個Survivor區)與年老代的比值(除去持久代)。設置為4,則年輕代與年老代所占比值為1:4,年輕代占整個堆棧的1/5
-XX:SurvivorRatio=4:設置年輕代中Eden區與Survivor區的大小比值。設置為4,則兩個Survivor區與一個Eden區的比值為2:4,一個Survivor區占整個年輕代的1/6
-XX:MaxPermSize=16m:設置持久代大小為16m。
-XX:MaxTenuringThreshold=0:設置垃圾最大年齡。如果設置為0的話,則年輕代對象不經過Survivor區,直接進入年老代。
對於年老代比較多的應用,可以提高效率。如果將此值設置為一個較大值,則年輕代對象會在Survivor區進行多次復制,這樣可以增加對象再年輕代的存活時間,
增加在年輕代即被回收的概論。

11.監視Tomcat的內存使用情況

使用JDK自帶的jconsole可以比較明了的看到內存的使用情況,線程的狀態,當前加載的類的總量等;

JDK自帶的jvisualvm可以下載插件(如GC等),可以查看更豐富的信息。如果是分析本地的Tomcat的話,還可以進行內存抽樣等,檢查每個類的使用情況
在java/bin目錄下

 


免責聲明!

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



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