5 votes

Quelle est la taille des méthodes que le JIT inline automatiquement ?

J'ai entendu dire que le JIT inline automatiquement les petites méthodes, comme les getters (ils ont environ 5 octets). Quelle est la limite ? Existe-t-il un indicateur JVM ?

10voto

apangin Points 4693

La politique d'inlining du JIT de HotSpot est plutôt compliquée. Elle implique de nombreuses heuristiques comme la taille de la méthode de l'appelant, la taille de la méthode de l'appelé, le nombre de nœuds IR, la profondeur d'inlining, le nombre d'invocations, le nombre de sites d'appel, le nombre de lancers, les signatures de méthodes, etc.

Certaines limites sont ignorées pour les méthodes accesseurs (getters/setters) et pour les méthodes triviales (nombre de bytecodes inférieur à 6).

Le code source correspondant se trouve principalement dans bytecodeInfo.cpp .
Voir InlineTree::try_to_inline , should_inline , should_not_inline fonctions.

Les principaux indicateurs de la JVM permettant de contrôler l'inlining sont les suivants

-XX:MaxInlineLevel (maximum number of nested calls that are inlined)
-XX:MaxInlineSize (maximum bytecode size of a method to be inlined)
-XX:FreqInlineSize (maximum bytecode size of a frequent method to be inlined)
-XX:MaxTrivialSize (maximum bytecode size of a trivial method to be inlined)
-XX:MinInliningThreshold (min. invocation count a method needs to have to be inlined)
-XX:LiveNodeCountInliningCutoff (max number of live nodes in a method)

3voto

Louis Wasserman Points 67557

https://docs.oracle.com/javase/8/embedded/develop-apps-platforms/codecache.htm#BABGGHJE

MaxInlineSize

Valeur par défaut : 35

Taille maximale du bytecode d'une méthode à inliner

Voir le document Options de la VM Java HotSpot pour JDK 7 et les versions antérieures.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X