Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java程序CPU使用率高_Java_Performance_Jdbc_Cpu Usage_Apache Commons Beanutils - Fatal编程技术网

Java程序CPU使用率高

Java程序CPU使用率高,java,performance,jdbc,cpu-usage,apache-commons-beanutils,Java,Performance,Jdbc,Cpu Usage,Apache Commons Beanutils,我编写了一个java程序,用于查询oracle数据库,并使用beanutils 在负载测试期间 我发现CPU使用率很高 计划大纲如下: List<Map<String, List>> rows = queryList(query, new Object[]{params..}); while(rows.hasNext()){ beanutils.setProperty(obj, field, row.get("some column name")); } 占用

我编写了一个java程序,用于查询oracle数据库,并使用
beanutils

负载测试期间
我发现CPU使用率很高

计划大纲如下:

List<Map<String, List>> rows = queryList(query, new Object[]{params..});
while(rows.hasNext()){
   beanutils.setProperty(obj, field, row.get("some column name"));  
}
占用大部分的
自时CPU

我使用
jmeter
加载测试(20个并发请求)。
jvisualvm
图形的基线为0%。因此,肯定是因为这个负载测试,只有cpu处于峰值状态

反射
导致CPU使用率高吗

执行一个查询,例如:
queryforlist
需要增加CPU利用率

稍后,如果我的计算量增加,那么我应该减少访问这个api的线程数量,因为它会再次占用我的cpu


提前感谢。

我确实在旧版Java版本(1.5/1.6)中遇到了反射性能问题。我在循环之前缓存了反射的方法调用,这大大提高了性能。反射很慢。但是你的堆栈跟踪与反射无关,这也是我同样关心的问题。sampler说
oracle.net
,但删除反射会降低CPU。我是否遗漏了什么?请小心性能测试,因为它们极易受到厄运和误解的影响。不要反省,再试一次,确保这是你唯一改变的事情——你能重复结果吗?您应该发布两个测试的更完整的代码示例。您看到的是
Packet.receive
方法调用需要很长时间,这仅仅是因为数据传输需要时间。但是,等待IO完成导致的CPU负载理论上为0%。因此,更高的CPU负载意味着其间的IO等待更少,这可能是一件好事(在您的情况下可能不是这样)。
oracle.net.ns.Packet.receive()
org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer()
org.apache.tomcat.util.net.NioEndpoint$Poller.run()