С JRockit, вы можете получить полный список потоков с помощью любых средств, и все эти средства включают в себя информацию о Garbage Collection Тема (ы):С недавними Sun JVM (1.6) можно ли получить информацию о потоке GC?
1) Задавая Thread
класс для информации:
Thread.getAllStackTraces();
2) Использование ThreadGroup
, чтобы получить эту информацию:
ThreadGroup root = Thread.currentThread().getThreadGroup();
while (root.getParent() != null) {
root = root.getParent();
}
Thread[] list = new Thread[root.activeCount() + 5];
root.enumerate(list, true);
3) Использование JMX для получения списка:
ThreadMXBean THREAD_MX_BEAN = ManagementFactory.getThreadMXBean();
long[] tids = THREAD_MX_BEAN.getAllThreadIds();
ThreadInfo[] tinfos = THREAD_MX_BEAN.getThreadInfo(tids);
4) CTRL-BREAK
Однако, используя Sun JVM - по крайней мере, недавнее Java 6 релизов - только CTRL-BREAK, кажется, включает нити сбора мусора и нить VM Периодическая задач. Я считаю полезным контролировать процессор, используемый потоками GC, поэтому мое приложение может обнаруживать и регистрировать, когда GC использует большую часть процессорного времени. Без этой информации вы знаете только, когда GC превышает определенные пороговые значения.
Если я могу даже просто узнать идентификатор резьбы потоков GC, тогда JMX, вероятно, предоставит остальную информацию, которая мне нужна (если в этих потоках нет чего-то другого). Например, с помощью метода:
long threadId = tids[0];
long cpuTime = THREAD_MX_BEAN.getThreadCpuTime(threadId);
Кто-нибудь знает, как - или, если известно, что не представляется возможным - для получения информации о коллекции мусора тему (ы) с помощью Sun JVM?
Да, но это не помогает мне * программно * получить информацию о потоках GC. Но, конечно, подробный вывод, на который вы ссылаетесь, может быть проанализирован после факта, конечно. – Eddie
С помощью JRockit список тем, которые вы можете получить различными способами, включает в себя потоки GC, и вы можете использовать JMX для получения времени процессора, потребляемого отдельными потоками GC. С помощью Sun JVM потоки GC, по-видимому, не включены ни в какие списки потоков. – Eddie