Необходимо ли создавать поток агента для мониторинга активности сборщика мусора в приложениях Java через JVMTI?
Мне интересно знать, когда сборщик мусора запускается и заканчивается во время выполнения приложения Java. Я читал документацию JVMTI, которая предоставляет такую информацию ( http://docs.oracle.com/javase/7/docs/platform/jvmti/jvmti.html). Я также нашел пример того, как использовать эти события (например, http://code.metager.de/source/xref/openjdk/jdk8/jdk/src/share/demo/jvmti/gctest/gctest.c).,
Обратите внимание, что в примере создается новый поток (который выполняется всякий раз, когда происходит JVMTI_EVENT_VM_INIT - обратный вызов устанавливается в строках 173, 178 и 179), и он RunAgentThread (строки 120-121) получает этот вновь созданный поток. Я изменил его, чтобы не создавать поток (т.е. закомментированные строки 173, 178 и 179), и агент, кажется, работает таким же образом. Итак, нужно ли создавать этот поток агента для мониторинга активности GC? И если так, то почему?