草庐IT

GC_concurrent

全部标签

java - 为什么 GC 时间在长时间运行的高容量 Java 应用程序上稳步增加?

我有一个大容量Java应用程序,它处理50000条消息/秒的一致负载。它使用以下设置针对高吞吐量进行了调整:我发现年轻的GC时间从开始时的50毫秒稳步上升到一天结束时的200毫秒,尽管GC运行的频率保持不变。如果我使用ParNewGC收集器尝试相同的运行,GC时间会以更快的速度增加。有没有人对这个问题有任何想法? 最佳答案 如果您有内存泄漏,或者内存中的缓存逐渐使用越来越多的内存,这些都会导致GC做更多的工作来跟踪可访问的对象。其他可能性是:您有非堆内存泄漏,这会导致分页增加;即,将物理内存页面复制到磁盘并返回。一些外部进程正在消耗

Java 垃圾收集器 G1GC 花费很长时间等待 'Object Copy'(疏散暂停)

我不是Java新手,但我对垃圾回收知之甚少。现在我想通过一些实际经验来改变这种状况。我的目标是延迟时间低于0.3秒,或者在极端情况下0.5秒也可以。我有一个带有-Xmx50gb(-Xms50gb)的应用程序并设置了以下其他GC选项:-XX:+UseG1GC-Xloggc:somewhere.gc.log-XX:+PrintGCDateStamps但现在我偶尔会因为垃圾收集而暂停超过5秒,尽管似乎有足够的可用内存。我发现的一个原因:[GCpause(G1EvacuationPause)(young)42G->40G(48G),5.9409662secs]为什么GCG1还在为此做一个“停止

java - 如何通过查看 gc 日志查看正在运行的垃圾收集器?

如何通过查看次要和主要收集的gc日志来了解正在运行的垃圾收集器(CMS、并行等)?我无权访问设置为java的命令行选项(appserver的sysadm不会让我看到它们)。我确实有相当详细的gc日志。 最佳答案 GC消息的确切格式取决于JVM版本和JVM设置。您可以在OracletutorialaboutGCtuning查看sample.DefNew是默认收集器。它是串行的还是并行的,选择哪一个取决于JVM版本/设置。您可以使用java-XX:+PrintCommandLineFlags-version查看JDK6中的默认设置。在我

java - 如何确定应用程序中的 gc-cpu 利用率?

我们希望将JConsole/JVisualVM的一些功能内部化,并从正在运行的应用程序中收集有关cpu利用率和内存消耗的数据。原因是,安全约束阻止我们在生产系统上向外部开放jmx端口。所需的大部分数据都可以通过MXBeans进行监控,但是,用于垃圾收集的cputime仍然让我们望而却步。通过GarbageCollectorMXBean监控gc-time没有用,因为它只提供并行工作收集器的walltime。我假设可以使用ThreadMXBean来确定所有gc线程的cputime。我看不出有什么办法可以安全地识别这些线程。有人知道JVisualVM是如何计算这个数字的吗?

java - Android-Studio-2.3 错误 :java. util.concurrent.ExecutionException : java. lang.RuntimeException: AAPT 进程未准备好接收命令

您好,我是Android-Studio-2.3的新手我弹出了这些错误消息:错误:java.util.concurrent.ExecutionException:java.lang.RuntimeException:AAPT进程未准备好接收命令错误:任务':app:mergeDebugResources'执行失败。Error:java.util.concurrent.ExecutionException:java.lang.RuntimeException:AAPTprocessnotreadytoreceivecommands我访问了很多网站,但找不到解决这个问题的办法顺便说一下,我已

java - 我可以通过编程方式找出实例所在的 GC 代吗?

此问题的范围仅限于HotSpotgenerations.有没有办法以编程方式找出特定实例生活在哪一代。数据如:年轻一代还是老一代?如果年轻,哪个幸存者空间?在TLAB内部?哪个线程?任何技术(例如,BTrace、JVMTI)都可以工作,只要我能做这样的事情:Objectx=newObject();HotSpotGenerationInfoinfo=HotSpotGenerationUtil.getInfo(x);乞丐不能成为选择者,但理想情况下,我还可以了解感兴趣的实例何时从一代转移到另一代在它发生的那一刻(即,基于事件回调-不感兴趣在轮询中隐含的延迟和开销。)对没有理由就说“不”的答

java - 垃圾收集详细信息 : Is this object eligible for GC?

我想像这样的程序...classTest{publicstaticvoidmain(String[]args){newTest();System.out.println("done");}protectedvoidfinalize(){System.out.println("thisobjectisknowntoneverbereferenced.");}}...可能会在“完成”之前输出"thisobjectisknowntoneverbereferenced."。(如果我在这里错了,请纠正我!)此外,编译器/JVM很容易检测到“未读的局部变量”。例如,在下面的程序中,Eclipse注

java - 为什么 GC 每小时运行一次?

我们观察到完整垃圾回收(GC)通常每小时执行一次。检查了JreMemoryLeakPreventionListener的时间间隔。它被设置为Long.MAX_VALUE。尽管gc每小时运行一次。还观察到GC称为hourlybasis是显式GCGC日志:2016-10-15T23:23:09.341-0400:165558.099:[GC(System.gc())[PSYoungGen:264601K->5865K(1357312K)]389672K->130937K(4153856K),0.0075210secs][Times:user=0.07sys=0.00,real=0.00se

java - Eclipse 上的 Glassfish 4 - 超时 - java.util.concurrent.TimeoutException

我在让Glassfish服务器实际启动并在Eclipse(luna)安装上保持运行时遇到了麻烦。我已经让Glassfish在Netbeans中运行良好。我已经在Eclipse中创建了服务器,我可以启动它,但进度条达到大约69%然后停止并最终给我一个错误:Unabletostartserverontime.java.util.concurrent.TimeoutException奇怪的是,在等待错误出现的同时,我也可以转到localhost:8080并且服务器正在运行,我也可以转到管理控制台。我也增加了超时(开始时为240秒),但同样的事情发生了。我已经在Eclipse中删除并重新创建了

java - 如何让 Label 在 SWT 中继承 Composite GC

我正在编写一个应用程序,我们的设计师想要对我们的一些合成Material的某些背景使用渐变。我写了下面的代码:composite.addListener(SWT.Paint,newListener(){publicvoidhandleEvent(Evente){GCgc=e.gc;Rectanglerect=composite.getClientArea();Colorcolor1=newColor(display,0,0,0);Colorcolor2=newColor(display,255,255,255);gc.setForeground(color1);gc.setBackgr