Domanda

Questa domanda si limita alla HotSpot generazioni . Esiste un modo per trovare a livello di codice in cui la generazione una particolare istanza vite. Dati come ad esempio:

  • giovane o vecchia generazione?
  • Se giovane, che lo spazio sopravvissuto?
  • All'interno TLAB? Quale filo?

Qualsiasi tecnica (ex, BTrace , JVMTI ) funziona così il tempo che posso fare qualcosa di simile:

Object x = new Object();
HotSpotGenerationInfo info = HotSpotGenerationUtil.getInfo(x);

I mendicanti non può essere selettori ma idealmente ho potuto imparare anche quando l'istanza di interesse è stato mosso da una generazione all'altra al momento accade (vale a dire, evento di callback base - non è interessato in ritardo e in testa implicita nel polling).

Non interessato a risposte che basta dire "no" senza giustificazione :)

È stato utile?

Soluzione

Per quanto ne so, non è possibile direttamente domanda che pool di memoria un oggetto attualmente vive a. Tuttavia, gli oggetti vengono promossi ad un pool di memoria diverso da una corsa garbage collection, ed è possibile interrogare il numero di importanti gc / minore corre dal VM iniziare a usare JMX. Se inoltre prendere nota di questi contatori quando viene creato l'oggetto, è possibile ricostruire se ci fosse un GC in quanto e da quello che piscina la vita degli oggetti in.

Altri suggerimenti

C'è una complicazione aggiuntiva alla "contare il numero di GC in quanto l'oggetto è stato creato" approccio - non prende in considerazione promozione oggetto prematura .

Se gli spazi superstiti sono fondamentalmente troppo piccoli, e la pressione di memoria da Eden (ossia il tasso di oggetti sopravvissuti almeno una volta) è elevato, quindi oggetti sarà promosso a di ruolo prima di toccare la soglia di piena occupazione Page.

In esempi reali, le applicazioni sane in genere hanno diverse da zero percentuali di promozione precoce. In realtà, un tasso di promozione prematura 0% è davvero un brutto segno - si dice che i vostri spazi sopravvissuti sono molto, molto troppo grande e si sta sprecando un sacco di memoria

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top