我在CentOS 5.4VPS上运行java服务器。VPS统计数据:-2.5 JDK单核处理器-2 2GB内存- OpenJDK 1.6 (也尝试过SunJDK1.7)
我遇到了java进程的CPU使用率非常高的问题。然后,我尝试分析java进程,看看是什么导致了速度减慢。我发现简单的方法(如Random.nextInt():787ms)需要1000毫秒才能完成一次调用。大多数方法不应该花费这么长时间,并且会在我的服务器上造成非常高的CPU使用率。这是CentOS出了什么问题吗?还是Java?或者是我的VPS上有什么配置不正确?
发布于 2011-09-22 03:43:09
不要在源代码中添加计时,而是尝试使用BTrace:http://kenai.com/projects/btrace这样的java代理,它可以让您获得所需的信息,但不会弄乱您的应用程序源代码。
BTrace可以与可视化工具结合使用,比如EurekaJ (我已经创建了一个用于可视化BTtrace输出的项目):http://eurekaj.haagen.name
其他商业分析选项也是可用的,例如JProfiler或YourKit,但它们确实有价格标签。
发布于 2011-08-17 02:55:19
当你测量程序中的处理时间时,你能重现你的时间吗,比如下面这样:
long start = System.currentTimeMillis();
/* Your code */
[...]
long time = System.currentTimeMillis() - start;
System.out.println("Measurement: " + time);另外,你所说的“当Java没有占用97%的CPU时,它是很快的”是什么意思?为什么Java一开始就占了97%?是否有多个线程在运行?你的计算是短时间的还是长时间的?
https://stackoverflow.com/questions/7071334
复制相似问题