Запуск Java 6 на Snow Leopard.
Предполагается, что вы сможете включать ExtendedDTraceProbes в работающем процессе Java с помощью утилиты jinfo .Даже в моей командной строке jinfo говорит о включении общих флагов:
Usage:
jinfo [option] <pid>
(to connect to running process)
...
where <option> is one of:
-flag [+|-]<name> to enable or disable the named VM flag
И, насколько я знаю, флаги DTrace не имеют какого-либо специального значения, это просто их наличие или отсутствиеэто имеет значение.
Но когда я пытаюсь это сделать, я получаю одну из двух ошибок, в зависимости от того, буду ли я предвосхищать это с sudo или нет.
Предполагая: jps
1234 StayRunning
...
Тот же пользователь, что и в процессе StayRunning: jinfo -flag + ExtendedDTraceProbes 1234
Exception in thread "main" java.io.IOException: Command failed in target VM
at sun.tools.attach.MacosxVirtualMachine.execute(MacosxVirtualMachine.java:200)
at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:195)
at sun.tools.attach.HotSpotVirtualMachine.setFlag(HotSpotVirtualMachine.java:172)
at sun.tools.jinfo.JInfo.flag(JInfo.java:111)
at sun.tools.jinfo.JInfo.main(JInfo.java:58)
Попытка от имени пользователя root: sudo jinfo -flag + ExtendedDTraceProbes 1234
Password: (which I enter)
1234: Unable to open socket file: target process not responding or HotSpot VM not loaded
Ошибка находится во второй строке, и, конечно, процесс все еще выполняется.
Как ни странно, на этой странице не отображается опция "+" для OS X , но моя собственная машина печатает сообщение об использовании.
Вот мой простой код.Сбой аналогично Eclipse.
StayRunning.java
class StayRunning {
public static void main( String [] args ) throws Exception {
long counter = 0L;
while( true ) {
Thread.sleep( 1000 );
counter++;
System.out.println( "tick "+counter );
}
}
}