gpt4 book ai didi

java - Eclipse 巨大的 CPU 峰值

转载 作者:行者123 更新时间:2023-12-01 11:53:53 27 4
gpt4 key购买 nike

我正在拼命寻找由于 CPU 峰值(18-19 个核心,100% 负载)导致的 Eclipse 卡住瞬间(最多 2-3 秒)的问题。在峰值期间什么都不起作用,整个 eclipse 只是没有反应。自从我修改了 eclipse.ini 以使用适当的堆大小和垃圾收集器后,生活变得更好了。尽管如此,卡住仍然存在。我已经使用jvisualvm来排除垃圾收集器。正如您在下面的屏幕上看到的,CPU 峰值和堆大小之间不存在依赖关系。

您能否告诉我如何使用 jvisualvm 或任何其他适用于 Linux 的工具来识别问题(CPU 峰值)?

<小时/>

技术细节:

$ java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.12.04.1)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

Spikes in CPU

$ cat /opt/eclipse/eclipse.ini
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212
-showsplash org.eclipse.platform
--launcher.defaultAction openFile
--launcher.appendVmargs
-vmargs
-Xss2M
-Xms3G
-server
-XX:MaxPermSize=2048M

-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:G1HeapWastePercent=5
-XX:InitiatingHeapOccupancyPercent=83
-XX:MaxGCPauseMillis=500
<小时/>

完整线程转储 here

最可疑的线程:

  "RJHelper [Thread-1]" daemon prio=10 tid=0x00007fe128009000 nid=0xe37a waiting for monitor entry [0x00007fe13f5f9000]
java.lang.Thread.State: BLOCKED (on object monitor)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:172)
- locked <0x00000003a4539c40> (a java.util.ArrayList)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:129)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
at com.sun.proxy.$Proxy16.runAsync(Unknown Source)
at de.walware.rj.server.client.AbstractRJComClient.runAsyncPing(AbstractRJComClient.java:754)
at de.walware.rj.server.client.AbstractRJComClient$KeepAliveRunnable.run(AbstractRJComClient.java:178)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

Locked ownable synchronizers:
- <0x000000039a4ee240> (a java.util.concurrent.ThreadPoolExecutor$Worker)

最佳答案

Jvisualvm 还支持线程转储,甚至支持基于线程转储的分析,这应该可以帮助您快速识别正在发生的情况。

关于java - Eclipse 巨大的 CPU 峰值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28587382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com