java - 什么会导致 JVM 锁定机器的鼠标点击和键盘输入?

标签 java linux jvm deadlock

我在 Linux 机器 (RHEL 5) 上运行 Java 6,我的程序偶尔会锁定计算机的输入。没有鼠标点击或键盘敲击起作用。奇怪的是,鼠标光标可以移动并且 CTRL+ALT+F2 命令有效(尽管它不会调出终端)。

使用 topjvisualvm 我没有发现内存泄漏或其他进程问题。但是,解冻计算机的唯一方法是从另一台计算机ssh 并终止 java 进程。这种行为的可能原因是什么?

我偶尔可以通过降低内存上限来重现它。似乎死锁可能在这里:

"Java2D Disposer" daemon prio=10 tid=0xae7d6800 nid=0x4451 in Object.wait() [0xae6ad000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0xb3253070> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <0xb3253070> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
    at sun.java2d.Disposer.run(Disposer.java:127)
    at java.lang.Thread.run(Thread.java:662)

最佳答案

在我看来,您描述的症状是未发布的 X11 键盘和指针抓取。这很容易由错误或无响应的 GUI -> X11 层引起。仔细检查您的 GUI 线程。

关于java - 什么会导致 JVM 锁定机器的鼠标点击和键盘输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9841593/

相关文章:

java - 我可以使用在 Java 7 中编译的 jar 作为针对 Java 6 编译的项目中的依赖项吗?

java - 博客语言结果有一小部分

java - spring mvc中不存在必需的MultipartFile参数 'file'

java - 如何在Java中将字符串值转换为枚举?

linux - 在 bash shell 中转义空间

Java - Java8 中的 JVM 垃圾收集器

java - 不存在表示消息寻址属性的必需 header

Posix 线程的条件变量

linux - 替代使用不带 -n 标志的 linux cp 命令?

java - 关于Java应用程序的内存使用