当使用G1收集器时,我们一直在与似乎是长期停止的世界停顿作斗争。我已经通读了Oracle文档,但仍然难以确定如何解释导致长时间停顿的原因以及如何处理。(下面是GC日志)
我们的实例正在被监视,下面的图中包含了信息:
我们有另一个监视工具ping JVM,我让它报告JVM在同一时间内有12秒没有响应。
wrapper.java.additional.40=-XX:+UseG1GC
wrapper.java.additional.44=-XX:+ScavengeBeforeFullGC
wrapper.java.additional.50=-XX:+PrintGCCause
wrapper.java.additional.51=-XX:+PrintGCDetails
wrapper.java.additional.52=-XX:+PrintGCTimeStamps
wrapper.java.additional.53=-XX:+PrintGCApplicationStoppedTime
wrapper.java.additional.54=-XX:+PrintGCApplicationConcurrentTime
wrapper.java.additional.55=-verbose:gc
wrapper.java.additional.56=-Xloggc:../../../logs/gc.log
wrapper.java.additional.57-XX:+UseGCLogFileRotation
wrapper.java.additional.58-XX:NumberOfGCLogFiles=10
wrapper.java.additional.59-XX:GCLogFileSize=100M
wrapper.java.additional.60=-XX:+PrintHeapAtGC
wrapper.java.additional.61=-XX:+PrintTenuringDistribution
wrapper.java.additional.62=-XX:+UseCompressedClassPointers
wrapper.java.additional.63=-XX:+UseCompressedOops
更新:元空间图
我在GC日志中至少看到两个问题:
>
system.gc()
或runtime.getruntme().gc()
显式调用了4个完整集合。每一个大约10秒长:
277042.600: [Full GC (System.gc()) 12G->1537M(5126M), 11.4203806 secs]
您可能需要添加-xx:+explicitGCInvokesConcurrent
JVM标志,以防止System.gc()
导致停止世界事件。
另一个问题是与GC无关的非常长的safepoint同步暂停:
5512447.686: Total time for which application threads were stopped: 16.4426008 seconds, Stopping threads took: 16.4414390 seconds
这通常是由MappedByteBuffer I/O或Java进程开始交换到磁盘引起的。关于类似的问题,请看这个和这个答案。
问题内容: 最近,我开始将ucos-ii移植到Ubuntu PC。 众所周知,在ucos-ii中无法通过在pthread的回调函数中的“ while”循环中添加一个标记来执行暂停和恢复来模拟“进程”,以执行暂停和恢复操作(类似于下面的解决方案)。因为ucos- ii中的“进程”可以随时暂停或恢复! 我在下面的网站上找到了一种解决方案,但是由于过时而无法构建。它使用Linux中的进程来模拟ucos-
我正在从数据库中提取数据,以检查我是否有可用的系统资源来处理来自KafkaListener的进一步消息。如果我的条件没有满足,那么我希望@KafkaListener暂停,当条件满足时,我希望@KafkaListener恢复。我如何在SpringKafka实现这一点? 另外,为特定分区暂停消费者有什么缺点吗?
你可以通过剪辑AnimationClip、操作AnimationAction、混合器AnimationMixer完成一些播放效果。 播放/暂停(.paused属性) <button onclick="pause()" type="button" style="position: absolute;padding: 10px;">暂停/继续</button> <script> // 暂停继续播放
问题内容: 当我打开自定义JDialog以及关闭对话框以再次继续时,如何使我的应用程序暂停。 问题答案: 只需使用: 我通常从的构造函数中调用它。 请参阅中的Javadocs 。 http://java.sun.com/javase/6/docs/api/java/awt/Dialog.html#setModal(boolean) 这将导致执行在当前线程上阻塞,直到对话框关闭。 或者,您可以使用:
我正在编写一个java程序来解析字幕文件中的文本。 这个想法是,每当我在播放电影时遇到字幕中我不知道的单词时,我暂停视频并打开我的客户端,然后客户端访问经过的时间,获取句子,并使用一些离线词典显示该句子中所有单词的含义。 我只想“在那一刻得到弹性时间”——我认为这是最基本的事情,所以我不想看所有关于VLC的文档(我试过了,但我觉得它们太复杂了,我对进一步为VLC开源做贡献没有兴趣)
我有一个Android应用程序,它使用谷歌admob网络显示间隙广告。admob的优点是,它的活动是独立的。我可以在我的MainActivity中加载广告,只要admob准备好了广告,它就会显示出来,即使我不再在MainActivity中。我已经使用了isLoaded()方法来显示广告,这占了90%的时间。 但其他10%的情况并非如此。有些活动应该保持无广告状态,因为广告会降低游戏质量。如果手机速