我正在尝试优化一个能够进行大量RMI调用的应用。根据JProfiler的说法,超过30%的CPU时间用在sun.rmi.server.LoaderHandler.urlsToPath()
方法中,显然在编组期间被调用。此方法调用URL.toExternalForm()
这是正常的吗?我还没有弄清楚哪些对象是完全序列化的,但它似乎是一个奇怪的瓶颈。
LoadHandler.urlsToPath()
的目的是什么,我该怎么做才能减少其使用?
答案 0 :(得分:0)
我发现这是Google搜索“sun.rmi.server.LoaderHandler.java”
/**
0795: * Convert an array of URL objects into a corresponding string
0796: * containing a space-separated list of URLs.
0797: *
0798: * Note that if the array has zero elements, the return value is
0799: * null, not the empty string.
0800: */
0801: private static String urlsToPath(URL[] urls) {
简单来说就是字符串抨击。您需要查看应用程序调用它的上下文,以找出为什么经常调用它,但很可能这是执行大量RMI调用的直接后果。如果是这样,解决方案将是减少RMI调用,或使用RMI以外的其他东西。