Lorsque j'ai utilisé la version ARM d'Open JDK, la vitesse de traitement était plus lente que la version Intel, donc Décrivez le contenu de l'enquête à ce moment-là et les sites auxquels il est fait référence.
Package de développement pour Java. En plus de JRE (Java Runtime Environment: environnement pour l'exécution de programmes pour Java) Contient un logiciel de développement tel que la compilation pour Java.
Vers JRE JVM (Java Virtual Machine: un environnement virtuel qui exécute des programmes Java) et Contient l'API (interface d'application) pour Java.
http://qiita.com/chkkchy/items/3a4594645b3aef7a98b7
Oracle JDK JDK développé par Oracle. Il y a des frais pour une utilisation commerciale.
A. CARACTÉRISTIQUES COMMERCIALES. Est décrit dans la colonne ↓ http://www.oracle.com/technetwork/java/javase/terms/license/index.html
Open JDK Une version open source du JDK dans laquelle des sociétés autres qu'Oracle participent également au développement.
Après JDK7, Open JDK et Oracle JDK sont fondamentalement identiques. Il n'y a pas de différence particulière tant qu'elle est programmée normalement.
Selon le site ci-dessous, l'Open JDK n'est pas optimisé pour ARM, Il existe une description indiquant que les performances de traitement sont inférieures à celles du JDK Oracle.
https://blogs.oracle.com/jtc/entry/comparing_arm_linux_jvms_revisited
Lorsque le programme Java a été exécuté avec Open JDK et Oracle JDK dans l'environnement ARM sur la machine réelle, les résultats suivants ont été obtenus.
Étant donné que la taille du cache de code de Java (zone de stockage temporaire du code compilé) est petite par défaut, les fonctions Java supprimeront le cache de code lorsque la limite supérieure est dépassée. Il semble y avoir un phénomène selon lequel le traitement devient lent car il se compile à chaque fois.
http://blog.cybozu.io/entry/2016/04/13/080000
Lorsque j'ai vérifié l'état de la compilation avec la commande jstat, Avec l'Open JDK, il n'était pas du tout compilé.
*Afficher les tâches compilées JIT cumulées
jstat -compiler ${JAVA_PID}Intervalle d'affichage(milliseconde)
*Afficher les méthodes compilées JIT
jstat --printcompilation ${JAVA_PID}Intervalle d'affichage(milliseconde)
https://docs.oracle.com/javase/jp/6/technotes/tools/share/jstat.html
Sur le site suivant, il est indiqué que le délai de traitement a été amélioré en désactivant la fonction de suppression du cache de code dans l'option de démarrage Java pour ce qui suit.
Dans mon environnement, même si les mesures ci-dessus ont été prises, l'état de non-compilation a continué.
http://blog.cybozu.io/entry/2016/04/13/080000
*Affiche la valeur initiale des options Java et si la mise en cache du code est activée, spécifiez des options pour désactiver la suppression du cache de code
java -XX:+PrintFlagsFinal -version
*Désactiver la suppression du cache de code
-XX:-UseCodeCacheFlushing
Je ne sais pas pourquoi, mais certaines options Java sont spécifiques à un processeur particulier, Est-il possible que l'option ait affecté la version ARM de sorte qu'elle ne soit pas compilée en premier lieu?
Recommended Posts