2012-02-28 91 views
0

我做內存管理分析我的Java Web應用程序,分析內存管理

開始我的tomcat之前在RAM中的可用內存大約爲595 MB,一旦我開始空閒內存變爲151 MB服務器。當我拿起堆轉儲時,對象佔用了262 MB。

那麼單獨的tomcat會剩下181 MB嗎?

另一個問題是,我跑500負載測試用戶。空閒內存達到8MB,當我在這裏採取堆轉儲時,大約是265MB。所以可用空間151MB減少到8MB,可能是什麼原因

請注意,我用top命令來檢查RAM中的空閒內存。

回答

0

可用內存是內存,程序或磁盤緩存未使用的內存。磁盤高速緩存的大小取決於您訪問或刪除了哪些文件,並且是內存消耗不佳的指示。

Java使用相當多的內存啓動。其中大部分是共享的。 Tomcat可能是一個相對複雜的應用程序,具體取決於您加載的內容,但爲JVM使用181 MB並且Tomcat對我來說似乎合理。

+0

謝謝彼得。關於負載測試期間的第二個問題,空閒內存變得非常低,但是當我進行堆轉儲時,在負載測試和負載測試期間進行比較時,我看不到大小上的巨大差異。在負載測試期間可能會導致內存不足的原因是什麼? – 2012-02-28 11:09:50

+0

您是否在負載測試或負載測試後進行轉儲?如果你在測試之前和之後進行比較,除非你有內存泄漏,否則你會期望它是相同的。 – 2012-02-28 11:16:15

+0

我在負載測試期間拿走了 – 2012-02-28 11:32:49

0

這一切都取決於你如何計算空閒內存(Profiler?TaskManager?編程?)和你正在評估的內存(堆?非堆?等等)。Tomcat本身並不佔用太多內存我沒記錯,但基本設置絕對不應該佔用180Mb)

+0

我用'top'命令計算RAM中的空閒內存。 – 2012-02-28 11:05:28

+0

好的,這可能不是計算實際記憶的最佳方法。但更重要的是,堆是一個「增長」的內存:它以最小內存量開始,然後每次需要比當前可用內存更多的內存時,它會增加其分配的內存(直到達到最大值)。這意味着您的對象可能需要100Mb,但堆可能使用128Mb。你有28Mb未使用。您應該多讀一些關於Java內存和Java GC的內容。 – 2012-02-28 11:11:32