Domanda

Domanda di base: JVM fornisce JVMTI quale API nativa per la profilazione e il debug JVM. Anche la strumentazione JVM fa lo stesso (è corretta?). Se sì, qual è la differenza tra entrambi?

È stato utile?

Soluzione

Non credo che la strumentazione sia JVMTI è superset della strumentazione .. poiché entrambi possono essere usati in modo indipendente.

JVMTI si basa su eventi e nei gestori di eventi possiamo acquisire informazioni richieste sul JVM.

La strumentazione è qualcosa in cui modifichiamo il bytecode e quindi a sua volta aggiungiamo un pezzo di codice extra in fase di esecuzione nella posizione richiesta nella classe prima che si carichi nella JVM. Questo pezzo di codice extra quando eseguito, aiuterà a raccogliere informazioni richieste per il profiler.

La strumentazione può essere ottenuta con l'aiuto di vari barattoli di terze parti come ASM.

Secondo la mia conoscenza ed esperienza, entrambi sono per la profilazione di Java e non per la profilazione nativa.

Probabilmente ho bisogno di leggere più documenti e provare campioni diversi per una migliore comprensione.

Altri suggerimenti

JVMTI fornisce tutte le funzionalità di cui il debugger ha bisogno, tuttavia se si desidera più di ciò che la JVMTI fornisce è necessario utilizzare la strumentazione.

JVMTI è la funzionalità di base che fornisce tutti i tipi di eventi per il debug, la profilazione, ecc ... Una delle aree che fornisce è l'accesso alle classi di intercetta (e ridefinire). java.lang.Istrument è un involucro Java in cima a JVMTI che offre un modo piacevole, facile e accessibile di ottenere eventi di caricamento della classe.

Pensa a JVMTI come a un puro superset di java.lang.instrument, ma richiede all'utente di scrivere il codice C.

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