2 回答

TA貢獻1805條經驗 獲得超9個贊
Tomcat 緩存了許多對象以使其運行速度更快。通過設置,server.max-http-header-size=2097152
您使這些緩存對象之一聲明 2 MB 內存并保留它。
該文檔有以下內容processorCache
:
協議處理程序緩存處理器對象以提高性能。此設置指示緩存這些對象的數量。-1表示無限制,默認為200。如果不使用Servlet 3.0異步處理,一個好的默認值是使用與maxThreads設置相同的值。如果使用 Servlet 3.0 異步處理,一個好的默認值是使用 maxThreads 和最大預期并發(fā)請求數(同步和異步)中的較大者。
所以我的建議是將設置server.max-http-header-size
為更合理的值,例如8KB(默認值),并在測試表明您確實需要它時慢慢加倍(相關:當總標頭大小大于時,Tomcat 拋出“400 Bad request”?server.max-http-header-size
)。

TA貢獻1836條經驗 獲得超5個贊
在運行壓力測試之前獲取轉儲,并在運行壓力測試之后獲取轉儲。Eclipse MAT 允許您比較兩個轉儲之間的直方圖,以便您知道發(fā)生了內存泄漏。
我建議使用 Java Mission Control (JMC) 來監(jiān)視 JVM,您可以在其中仔細查看內存消耗(堆和非堆)。請注意正在使用的內存和已提交的內存之間的區(qū)別。
較新版本的 Java 具有更復雜的算法,其中 JVM 將內存返回給操作系統(tǒng)。對于 Java 8,一種選擇是使用 Eclipse Open J9 JVM。
添加回答
舉報