93 votes

Limite de généraux GC dépassée

Quel est le temps d’échantillonnage JVM utilise pour lever ' java.lang.OutOfMemoryError : limite supérieur GC'? Je sais que vous pouvez contrôler 98 % et 2 % avec les paramètres GCTimeLimit et GCHeapFreeLimit mais quel est le temps d’échantillonnage ?

82voto

Edwin Buck Points 33097

À partir de Java SE 6 HotSpot[tm] de la Machine Virtuelle de Collecte des Ordures Tuning

la suite

Excessive GC Temps et OutOfMemoryError

La concurrente de collecteur de jeter un OutOfMemoryError si trop de le temps passé à la collecte des ordures: si plus de 98% de la temps total passé dans la collecte des ordures et moins de 2% de la tas est récupéré, un OutOfMemoryError sera levée. Cette fonctionnalité est conçu pour empêcher les applications de s'exécuter pendant une longue période de temps tout en faisant peu ou pas de progrès, parce que le tas n'est trop petites. Si nécessaire, cette fonctionnalité peut être désactivée par l'ajout de l' option -XX:-UseGCOverheadLimit à la ligne de commande.

La politique est la même que dans le parallèle collecteur, sauf que le temps passé à l'exécution simultanée de collections n'est pas prise en compte pour la 98% de limite de temps. En d'autres termes, seules les collections effectuée alors que l' l'application est arrêtée comptent excessive GC temps. Ces les collections sont généralement dues à une concurrente mode de défaillance ou d'une explicite de la collection de la demande (par exemple, un appel Système.gc()).

en conjonction avec un passage plus bas

L'un des plus couramment rencontrés utilise explicite de la poubelle la collection se produit avec RMIs distribué collecte des déchets (DGC). Les Applications utilisant RMI référence à des objets en d'autres machines virtuelles. Les ordures ne peuvent pas être recueillies dans ces applications distribuées sans occasionnellement, collection le tas local, de sorte RMI forces de collections complètes périodiquement. La fréquence de ces collections peuvent être contrôlés avec des propriétés. Par exemple,

java -Dsun.rmi.dgc.client.gcInterval=3600000

-Dsun.rmi.dgc.server.gcInterval=3600000 spécifie explicite de la collecte une fois par heure au lieu de la fréquence par défaut d'une fois par minutes. Toutefois, cela peut également provoquer des objets à prendre beaucoup plus de temps pour être récupérée. Ces propriétés peuvent être définies aussi haut que Long.MAX_VALUE pour rendre le temps entre explicite collections réellement infini, si il n'y a pas de désir pour une limite supérieure sur l'actualité de la GCR de l'activité.

Semble impliquer que la période d'évaluation pour la détermination de l'98% est une longue minute, mais il pourrait être configurable sur Sun JVM avec le bon de définir.

Bien sûr, d'autres interprétations sont possibles.

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