'dan başka bir şekilde tetiklemek için bir yol var mı? Profil yapısı bilgisi (JVM tarafından sağlanan) ile yapıya dayalı bir JIT stratejisi oluşturmaya çalışıyorum ancak JIT'i manuel olarak tetikleyemedim. This documantation, java.lang.Compiler.compileClass()
'u çağırarak JIT'i çalıştırabileceğimi ancak yöntem her seferinde yanlış döndürdüğünü ve JVM'yi her çalıştırdığımda java.lang.Compiler
denetimlerinin (java.compiler) null olduğunu bildiriyor. OpenJDK ve Oracle JVM 1.7 denedim, her ikisi de aynı.JIT'yi elle java.lang.Compiler
i
$ jstat -printcompilation <PID>
ile derleme istatistiklerini Ancak ben JIT başarılı olarak görebilirsiniz koşulları uyan bazı yöntem derler.
Herhangi bir yol varsa, java kodundan tetiklerim. hotspot VM's code'da da arama yapmaya çalıştım ancak kararın verildiği ve JIT'in başladığı sınıfı ve yöntemi bulamadım.
Düzenleme: Daha etrafa baktıktan sonra, compilationPolicy.cpp bu bulduktan sonra kararın bağlı olduğu yeri tam olarak bulamadım. Ben, (sadece düşünme) gibi bir şey
if(hot_count > Threshold){
compile_method(methodHandle);
}
ancak bunun yerine buldum hariç ediyorum
void SimpleCompPolicy::method_invocation_event(methodHandle m, JavaThread* thread) {
const int comp_level = CompLevel_highest_tier;
const int hot_count = m->invocation_count();
reset_counter_for_invocation_event(m);
const char* comment = "count";
if (is_compilation_enabled() && can_be_compiled(m)) {
nmethod* nm = m->code();
if (nm == NULL) {
// [MY COMMENT] no check being done on hot_count in here or callee methods
CompileBroker::compile_method(m, InvocationEntryBci, comp_level, m, hot_count, comment, thread);
}
}
}
Bildiğim kadarıyla, yerli JVM kod izleme olarak im benim ana konu uzaklaşıyor.
Hala kodunun java tarafında kullanmak için basit bir çözüm arıyorum.
Emin misiniz Java 9. bölümünü oluşturmak üzere planlanmış olmasına rağmen
Ne yazık ki, henüz mevcut değil? Başvurduğunuz belgeler, ayarlanması gerekenlerin açık bir referansını yapar. System.out.println (System.getProperty ("java.compiler")); 'ile kontrol edebilirsiniz. – Makoto
'System.out.println (System.getProperty (" java.compiler "))' 'kod yazdırır null.Ve belirli bir değer ayarlamak için herhangi bir belge bulamamalıyım bile kendimden bir değer ayarlamanız gerektiğinden emin değilim . –