繁体   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