我正在运行第三方RMI服务器应用程序提供了一个方法("getImage()" returns an image as byte[]).
这个方法的实现(通过SOAP-WS获取图像)由我提供。
运行这个RMI-Server的问题是CPU占用率过高(用jvisualvm测量):65%的CPU时间进入"sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()"
,而第二个地方用15%是"sun.net.www.http.KeepAliveCache.run()"
。 “真正”的工作(缩放图像)排在第四位。 服务器运行在win 2003服务器上。 我猜资源/连接处理有问题吗? 但这是一个实现问题或Windowsconfiguration问题?
另一个观察是:如果cpu利用率高,内存利用率也上升 – 问题是:这是因为gc无法完成其工作或许多图像等待交付。 所有我可以说的内存用于byte[]
。
所以有什么想法做什么?
thx提前
sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run()是在编组参数之后和编组结果之前调用服务器中的远程实现的方法。 时间表可能意味着,作为RMI结果,需要更多的时间才能通过线返回图像,而不是缩放图像。
我只能推测,字节数组可能是图像,但它可能是任何数量的东西。
顺便说一句,你运行一个多核心机器? 我也遇到了这个问题,发现VisualVM在四核Win7机器上占用了50%左右的CPU利用率,而在单核winXP上指向了相同的元凶。 我正在运行服务器的Jetty。
对不起,我不能回答真正的问题,但希望听到一个解决方案在这里或能够在这里很快分享。 既然你几个月前遇到过这个,也许你已经找到了一个,可以分享?