java:cpu 100%的用法。可以做什么优化技巧?

时间:2012-02-16 10:10:04

标签: java performance jvm cpu

我的java程序需要30-70%的CPU使用率和3%的内存(我使用TOP linux功能)。 我运行了一个32位版本的java。

java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode)

有没有办法让它更快? un java软件有哪些优化? (我没有源代码,因此无法进行源代码优化。)

安装64位java会有帮助吗?其他一些优化技巧?

5 个答案:

答案 0 :(得分:2)

64位java肯定会增加内存使用量,但你无法保证降低CPU使用率。您最好的选择是联系软件供应商并向他们发送您的规格说明问题所在。与此同时,您可以投资更好的硬件。

优化CPU使用率而不会干扰源代码是一个艰难的过程。

答案 1 :(得分:2)

根据您的描述很难分辨,但这里有一些提示:

  1. 添加:

    -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
    

    JVM选项。经常运行GC可能会导致CPU使用率过高。

  2. 使用topjstack,您可以轻松发现哪些Java线程占用了大部分CPU。

  3. 最后插入一些Java分析器(它们不需要源代码)并检查结果。

  4. 但是,如果没有源代码和调整它的能力,你想要发现哪些线程/方法(堆栈跟踪和分析将帮助你)消耗CPU,你就不能做更多的事情。

答案 2 :(得分:0)

正如Jörg在评论中提到的那样:“优化需要理解。”在目前的理解水平上(即没有源代码,没有明确的程序目的描述),您的选择归结为:

  • 检查JVM内存设置(可能是Java GC是罪魁祸首)
  • 使用另一个更好的程序,
  • 购买更好的硬件

答案 3 :(得分:0)

鉴于您没有自己的源代码,并且您的正常运行占用最多70%的CPU,因此无法使您的程序消耗100%的CPU。除非你的程序依赖于你可以调整的一些外部复杂输入。

但似乎你的目标是更快地运行你的程序,如果写得不好或没有考虑优化,这是不可能的。

同样,更好的CPU可以更快地运行它,但这不是“运行最佳”。

它仅消耗 3%内存 30-70%CPU 这一事实表明程序在任何情况下都很慢。由于它不会占用太多内存和太多CPU,因此速度很慢。

答案 4 :(得分:0)

你没有太多的选择,如果你没有源,并且需要大量的CPU,那么代码肯定是问题所在。

对于性能测试,您可以尝试其他JRE,如openjdk。但是不要以为你会获得很多。您可以做的最好的事情是通过一个新的更快的CPU。