簡體   English   中英

Java應用程序狀態不一致

[英]Java application inconsistent state

我發現我的整個應用程序混亂了。 第一本日志混在一起 應用程序似乎在每個常規間隔后都凍結了,每分鍾左右凍結了將近半分鍾。執行大部分任務的常規線程似乎已經丟失,沒有任何痕跡。所有這些都是從記錄。 套接字似乎已根據用戶報告掛斷。

仍然很少有線索,是什么觸發了所有這些。 CPU使用記錄顯示當時一切正常。 我有話要說,您能指出一個起點或任何實例逃避我的想法,但我可以解密所有這些混亂的可能原因。

謝謝,Mawia

當我在有限內存的虛擬盒子上運行大量使用GC的Java應用程序時,遇到了這種行為。 來賓操作系統沒有足夠的“物理”內存,因此它使用了交換內存。 但是交換位於映射到主機OS物理磁盤的“虛擬”磁盤上。

當運行在來賓OS上的Java GC開始工作時,它必須從實際位於主機OS物理磁盤上的堆中刪除垃圾。

我不想說您的情況是相同的,但可能是相似的。 因此,請嘗試檢查您有多少物理內存,GC運行的頻率以及試圖清除的內存量。 您給JVM分配了1GB。 您是否有足夠的物理內存? 也許您的JVM堆實際上位於OS交換內存中,即磁盤上?

嘗試調查您的應用程序。 它是否有機會分配巨大的內存並經常清理它? 是否可以使用緩存等? 檢查perm gen占用了多少內存,以及壽命短的對象如何占用內存。

為什么不嘗試使用基於示例的監視工具將程序附加到程序上,並查看線程和JVM子系統在做什么? JVisualVM隨JDK一起提供,並且易於使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM