Bestimmen Sie die Java-Klassengröße von JNI JCLass
-
12-11-2019 - |
Frage
Ich verwende JNI, um ein Programm zu analysieren.Ich frage mich, nachdem ich JClass-Referenz erhalten habe, wie es möglich ist, die Größe der darunterliegenden Klasse zu finden?
Beispiel: Klasse CLS= env-> findklasse ("lee / boehm / test");
Von hier aus, wie kann ich die Größe der Klasse Lee.boehm.Test in Hotspots Haufen auswerten?
danke Böhm
Lösung
hier gehst du
agent.c generasacodicetagpre.
und ./util/util.java generasacodicetagpre.
und test.java generasacodicetagpre.
gcc -i / opt / ibm-jdk-bin-1,6.0.9 / einschließen -Hared -fpic -o liagent.so agent.c
java -agentpath: ./ liagent.so test
Andere Tipps
hmmm .... Wenn Sie die Größe der Klassenbytes bedeuten, dann ja ..... Sie würden JVMTI verwenden, um die fragliche Klasse erneut zu übertragen, in der ein Klassenhook-Ereignis generiert wird, das Sie anhören, und dies könnte Ihnen dasKlassenbytes und die Größe .... Aber sie wären mit der .class-Datei auf der Festplatte identisch .... Wenn die Klasse jedoch dynamisch generiert wird und deshalb nicht nur die Größe der .class-Datei ansehen kannDiese Technik würde funktionieren ..... Ich kann den Code für Sie schreiben, wenn Sie möchten.