昨天,在安装每日软件更新后,我发现一个 Java 应用程序的 CPU 使用率很高,而该应用程序在此之前一直运行良好。Java 是更新的软件包之一。来自/var/log/apt/history.log
:
Start-Date: 2015-10-29 07:18:28
Commandline: aptdaemon role='role-commit-packages' sender=':1.108'
Install: libsctp1:amd64 (1.0.16+dfsg-2), lksctp-tools:amd64 (1.0.16+dfsg-2, automatic)
Upgrade: python3-problem-report:amd64 (2.17.2-0ubuntu1.5, 2.17.2-0ubuntu1.7), qtcreator-plugin-ubuntu-common:amd64 (3.1.1+15.10.20150720-0ubuntu1~0vivid1, 3.1.1+15.10.20151018-0ubuntu1~0vivid1), python-apport:amd64 (2.17.2-0ubuntu1.5, 2.17.2-0ubuntu1.7), ubuntu-sdk-qmake-extras:amd64 (3.1.1+15.10.20150720-0ubuntu1~0vivid1, 3.1.1+15.10.20151018-0ubuntu1~0vivid1), libapache2-mod-php5:amd64 (5.6.4+dfsg-4ubuntu6.3, 5.6.4+dfsg-4ubuntu6.4), php5-mysql:amd64 (5.6.4+dfsg-4ubuntu6.3, 5.6.4+dfsg-4ubuntu6.4), php5-common:amd64 (5.6.4+dfsg-4ubuntu6.3, 5.6.4+dfsg-4ubuntu6.4), php5-curl:amd64 (5.6.4+dfsg-4ubuntu6.3, 5.6.4+dfsg-4ubuntu6.4), php5-dev:amd64 (5.6.4+dfsg-4ubuntu6.3, 5.6.4+dfsg-4ubuntu6.4), python-problem-report:amd64 (2.17.2-0ubuntu1.5, 2.17.2-0ubuntu1.7), qtcreator-plugin-ubuntu:amd64 (3.1.1+15.10.20150720-0ubuntu1~0vivid1, 3.1.1+15.10.20151018-0ubuntu1~0vivid1), php5-readline:amd64 (5.6.4+dfsg-4ubuntu6.3, 5.6.4+dfsg-4ubuntu6.4), php5:amd64 (5.6.4+dfsg-4ubuntu6.3, 5.6.4+dfsg-4ubuntu6.4), openjdk-7-jdk:amd64 (7u79-2.5.6-0ubuntu1.15.04.1, 7u85-2.6.1-5ubuntu0.15.04.1), shotwell-common:amd64 (0.20.2-0ubuntu3, 0.20.2-0ubuntu4), shotwell:amd64 (0.20.2-0ubuntu3, 0.20.2-0ubuntu4), openjdk-7-jre-headless:amd64 (7u79-2.5.6-0ubuntu1.15.04.1, 7u85-2.6.1-5ubuntu0.15.04.1), ntp:amd64 (4.2.6.p5+dfsg-3ubuntu6, 4.2.6.p5+dfsg-3ubuntu6.2), apport-kde:amd64 (2.17.2-0ubuntu1.5, 2.17.2-0ubuntu1.7), php5-cli:amd64 (5.6.4+dfsg-4ubuntu6.3, 5.6.4+dfsg-4ubuntu6.4), openjdk-7-jre:amd64 (7u79-2.5.6-0ubuntu1.15.04.1, 7u85-2.6.1-5ubuntu0.15.04.1), openjdk-7-source:amd64 (7u79-2.5.6-0ubuntu1.15.04.1, 7u85-2.6.1-5ubuntu0.15.04.1), apport-gtk:amd64 (2.17.2-0ubuntu1.5, 2.17.2-0ubuntu1.7), apport:amd64 (2.17.2-0ubuntu1.5, 2.17.2-0ubuntu1.7), php-pear:amd64 (5.6.4+dfsg-4ubuntu6.3, 5.6.4+dfsg-4ubuntu6.4), libaudiofile1:amd64 (0.3.6-2, 0.3.6-2ubuntu0.15.04.1), icedtea-7-jre-jamvm:amd64 (7u79-2.5.6-0ubuntu1.15.04.1, 7u85-2.6.1-5ubuntu0.15.04.1), openjdk-7-doc:amd64 (7u79-2.5.6-0ubuntu1.15.04.1, 7u85-2.6.1-5ubuntu0.15.04.1), python3-apport:amd64 (2.17.2-0ubuntu1.5, 2.17.2-0ubuntu1.7), php5-gd:amd64 (5.6.4+dfsg-4ubuntu6.3, 5.6.4+dfsg-4ubuntu6.4), ntpdate:amd64 (4.2.6.p5+dfsg-3ubuntu6, 4.2.6.p5+dfsg-3ubuntu6.2)
End-Date: 2015-10-29 07:19:15
当应用程序运行时,java
和都Xorg
使用超过 50% 的 CPU。这会导致应用程序普遍变慢,而且我确信过去并非如此。
该应用程序实际上是一个(基于摆动的)游戏。虽然它是开源的,但我想它不适合mcve,所以我不能用它来提交错误报告。另外,我不知道在哪里可以报告。
我的问题是:我怎样才能找出问题所在,以便我可以在某处(哪里?)报告错误并帮助解决问题?
我确实进行了线程转储,但我不知道如何处理它,因为实际上没有线程被阻塞。
我的环境:
$ java -version
java version "1.7.0_85"
OpenJDK Runtime Environment (IcedTea 2.6.1) (7u85-2.6.1-5ubuntu0.15.04.1)
OpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode)
$ uname -a
Linux pif 3.19.0-31-generic #36-Ubuntu SMP Wed Oct 7 15:04:02 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 15.04
Release: 15.04
Codename: vivid
我查看了 VisualVM,并注意到那里报告的 CPU 使用率 (10%) 比报告的top
(45%) 小得多:
我尝试的另一件事是使用 Java 8 运行它。在这种情况下,游戏运行良好,并且报告的 CPU 使用率top
分别为 20-22% 左右:java
,Xorg
和compiz
.