当前位置: 首页 > 知识库问答 >
问题:

java应用程序假装死亡。Jstack可以进行应用程序恢复吗?

施永宁
2023-03-14

今天我发现我的应用程序无法访问,然后我登录我的服务器,我发现应用程序的线程是正常的,但是CPU负载太高了。

然后,我想使用jstack命令,但它指出need-f option。现在我发现GC日志停留在[GC(Allocation Failure)2015-10-10t10:18:10.564+0800:71147.518:[parnew:中,没有其他日志。

然后,我使用了jstack-f命令,奇怪的事情发生了,CPU正常了,我的服务器也正常了,GC日志也正常了,第一行是[GC(分配失败)2015-10-10t10:17:50.757+0800:53501.137:[parnew:210022k->245k(235968k),369.6907808秒]400188k->1 90410k(1022400k),369.6909604秒][times:user=3475.15 sys=11.69,real=369.63秒],jstack结果的可运行线程都是GC线程,像“Gang

下面是我的JAVA_OPTIONS

-server-dfile.encoding=utf-8\-xms2g-xmx2g-xmn512m\-xx:+useparnewgc-xx:+useconcmarksweepgc-xx:+cmsparallelexervivorratio=8\-xx:+usecmsinitiatingoccupancyonly-xx:cminitiatingoccupancyfraction=75\-xx:+printgcdatestamps-verbose:gc-xx:+printgcdetails


共有1个答案

束涵涤
2023-03-14

有一个新的bug影响Linux内核3.14-3.18

症状,线程在阻塞同步原语时消耗100%。发送信号(就像jstack-f所做的那样)可以修复这种情况。在JVM情况下,如果GC线程受此影响,应用程序将永远停留在STW暂停中。

你可以在Gil Tene的这篇文章中找到更多的细节

 类似资料:
  • 问题内容: 我不是在寻找java-web- start,而是在寻找胖客户端应用程序安装工具包。我有一个独立的应用程序,其中包含几个文件(jar文件,数据文件等),并且需要执行一些非常标准的安装任务,例如向用户询问目标目录,让他们找到系统的某些部分- 选择一些按计算机或按用户配置的选项,并可能尝试检测它们的某些计算机设置。 我正在寻找类似于MSI或其他向导驱动的安装应用程序的东西。什么是Java的良

  • 问题内容: 我有一个Java应用程序,可从中构建一个依赖于许多第三方jar的jar,打包此应用程序以供最终用户分发的最佳/常见方式是什么? 问题答案: 最好的方法是使用Maven2之类的构建工具或类似的工具,并使用它来管理依赖项并构建多合一软件包。 否则,您通常会被混乱的清单文件所困扰。虽然,像Eclipse或NetBeans这样的IDE可能会帮助您一点。

  • 我想让应用程序恢复音乐当我们回到应用程序时,我尝试过使用方法,但服务中没有方法。TIA

  • 日志: ... 我的项目中只有三个文件:

  • 正如SonarSource所说: 捕获Throwable或Error也将捕获OutOfMemoryError和InternalError,应用程序不应试图从中恢复。 现在,如果在一个事务中,我不应该尝试回滚它吗?或者我会在数据库中造成更糟糕的状态吗?是否在创建OutOfMemoryError时释放了资源,以便我可以再次使用内存?

  • 例如。 这应该运行一个简单的hello world应用程序,摘自oracle文档。然而,当我‘运行’这个代码,没有窗口打开。取而代之的是打开一个名为“Java”的应用程序。看起来'java'只是一个位于'jdk1.8.0_25.jdk/contents/home/bin'中的'UNIX可执行文件‘。应用程序'java'绝对不显示任何东西,并且在没有强制退出的情况下无法关闭。 我在MacBook上运