2010-01-18 9 views
0

J'essaie d'optimiser une application qui fait beaucoup d'appels RMI. Selon JProfiler, plus de 30% du temps processeur est passé dans la méthode sun.rmi.server.LoaderHandler.urlsToPath(), qui est apparemment appelée pendant le marshaling. Cette méthode appelle URL.toExternalForm()sun.rmi.server.LoaderHandler.urlsToPath() prend beaucoup de CPU

Est-ce normal? Je n'ai pas encore compris quels objets sont sérialisés exactement, mais cela semble être un goulot d'étranglement étrange.

Quel est le but de LoadHandler.urlsToPath(), et que puis-je faire pour réduire son utilisation?

Répondre

0

Je trouve cela avec une recherche Google pour "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) { 

En termes simples, il est dénigrement String. Vous devez examiner le contexte dans lequel votre application appelle cela pour comprendre pourquoi elle est appelée si souvent, mais il y a de fortes chances que cela soit une conséquence directe de nombreux appels RMI. Si oui, la solution sera de faire moins d'appels RMI, ou d'utiliser autre chose que RMI.

Questions connexes