sun.rmi.server.LoaderHandler.urlsToPath () занимает много процессора - PullRequest
0 голосов
/ 18 января 2010

Я пытаюсь оптимизировать приложение, которое выполняет много вызовов RMI. Согласно JProfiler, более 30% процессорного времени тратится на метод sun.rmi.server.LoaderHandler.urlsToPath(), который, очевидно, вызывается во время маршалинга. Этот метод вызывает URL.toExternalForm()

Это нормально? Я еще не выяснил, какие объекты сериализуются точно, но это кажется странным узким местом.

Какова цель LoadHandler.urlsToPath(), и что я могу сделать, чтобы уменьшить его использование?

1 Ответ

0 голосов
/ 18 января 2010

Я нашел это с помощью поиска 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) {

Проще говоря, это String bashing.Вам нужно посмотреть на контекст, в котором ваше приложение вызывает это, чтобы выяснить, почему оно вызывается так часто, но есть вероятность, что это является прямым следствием выполнения большого количества вызовов RMI.Если это так, то решение будет заключаться в том, чтобы делать меньше вызовов RMI или использовать что-то отличное от RMI.

...