相关疑难解决方法(0)

kill -3来获取java线程转储

我正在使用kill -3命令在unix中查看JVM的线程转储.但是我在哪里可以找到此kill命令的输出?我搞不清楚了!!

java multithreading dump

112
推荐指数
6
解决办法
16万
查看次数

运行jmap获取无法打开套接字文件

我必须运行jmap才能获取我的进程的堆转储.但jvm回来了:

Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
Run Code Online (Sandbox Code Playgroud)

所以我使用了-F:

./jmap -F -dump:format=b,file=heap.bin 10330
Attaching to process ID 10331, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.51-b03
Dumping heap to heap.bin ...
Run Code Online (Sandbox Code Playgroud)
  1. 使用-F 是可以进行堆转储吗?
  2. 我等了20分钟还没完呢.有什么想法吗?

java linux jvm jvm-hotspot

76
推荐指数
4
解决办法
5万
查看次数

Java中的死锁检测

很久以前,我从Java参考书中保存了一句话:"Java没有处理死锁的机制.它甚至不知道发生了死锁." (Head First Java 2nd Edition,p.516)

那么,它是什么呢?有没有办法在Java中捕获死锁案例?我的意思是,有没有一种方法可以让我们的代码了解发生死锁的情况?

java multithreading deadlock

62
推荐指数
7
解决办法
4万
查看次数

在IBM JRE上运行jMockit测试时AttachNotSupportedException

当我尝试使用IBM JDK运行简单的jMockit/JUnit测试时,我得到以下异常.有人遇到过这个问题吗?我试过-Dcom.ibm.tools.attach.enable=yes作为VM参数,但没有运气.相同的代码在Sun JDK中正常工作.

java.lang.RuntimeException: com.sun.tools.attach.AttachNotSupportedException: Unable to enqueue operation: the target VM does not support attach mechanism
    at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:89)
    at mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:54)
    at mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:21)
    at mockit.internal.startup.Startup.initializeIfNeeded(Startup.java:98)
    at mockit.internal.startup.Startup.initializeIfPossible(Startup.java:112)
    at org.junit.runner.Runner.<clinit>(Runner.java:22)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to enqueue operation: the target VM does not support attach …
Run Code Online (Sandbox Code Playgroud)

junit unit-testing jmockit

4
推荐指数
1
解决办法
8146
查看次数

Java - AttachNotSupportedException:无法打开套接字文件:HotSpot VM 未加载

尝试将代理 jar 文件附加到在 Java 中运行的另一个进程时,我遇到了异常:

com.sun.tools.attach.AttachNotSupportedException: 无法打开套接字文件:目标进程未响应或未加载 HotSpot VM

我正在运行 linux,使用 java Oracle JDK 8_101,但是在回答这个问题之后,我意识到操作系统对于这个问题的原因并不重要。

编辑: 答案:

如果您遇到此问题,我之所以会遇到此问题,是因为我从不同的 JVM 启动程序,而不是为系统指定的默认 JVM。

IE)

程序 A (启动器)运行在JVM-1 (例如 JDK_8_1,或 JDK_8_1/jdk/jre)上

程序 A (启动器),使用java -jar programB.jar创建一个进程

程序 B (目标)运行在系统的默认 JVM,JVM-2 (例如 JDK_8_2,或 JDK_8_2/jre)上

方案 (启动器) CAN NOT attatch到 程序 (目标),因为JVM方案 (启动器)上运行,不匹配的JVM,其中计划 (目标)在其上运行,从而抛出 COM .sun.tools.attach.AttachNotSupportedException:

java sockets linux jvm agent

2
推荐指数
1
解决办法
6632
查看次数