3

J'ai besoin de mon hotspot Oracle pour lancer une exception java.lang.OutOfMemoryError: GC overhead limit exceeded beaucoup plus tôt qu'avec les paramètres par défaut de UseGCOverheadLimit.Ajustement des paramètres Overhead GC surchargés

Par défaut, OOME se produit lorsque plus de 98% du temps est passé dans le GC et moins de 2% du tas est récupéré (décrit http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#par_gc.oom). Par exemple, j'ai besoin de ma JVM pour lancer OOME lorsque plus de 20% du temps est passé en GC. Malheureusement, le -XX:GCTimeRatio=nn ne semble pas faire la différence. La raison pour laquelle je dois ajuster ma JVM de cette façon est que je teste mon application, qu'elle contienne une fuite de mémoire (précisément, j'ai une infrastructure de détection de fuites de mémoire où je veux tester notre application quotidiennement).) et je n'ai pas besoin de ma JVM pour essayer autant que possible de libérer le tas.

Répondre

1

Par défaut, oome se produit lorsque plus de 98% du temps est consacré à GC et moins de 2% du tas est récupéré

Ces deux valeurs sont configurées via GCHeapFreeLimit et GCTimeLimit

GCTimeRatio définit uniquement un objectif logiciel pour lequel les heuristiques GC seront optimisées.

+0

Merci! Si triste que je n'ai pas pu google ... –