Бортовой самописец Java: Запись данных в виде массива байтов

#java #jfr

Вопрос:

Recording позволяет сохранять записанные данные в файл с помощью dump() метода (как показано в примере ниже, скопированном из javadoc). Есть ли способ, как получить такие записанные данные в виде byte[] .

Желательно без внешних зависимостей. Я знаю о реализации пользовательских функций в памяти FileSystem .

    Configuration c = Configuration.getConfiguration("default");
   Recording r = new Recording(c);
   r.start();
   System.gc();
   Thread.sleep(5000);
   r.stop();
   r.dump(Files.createTempFile("my-recording", ".jfr"));
 

Ответ №1:

Вы что-то ищете getStream ? Это единственный API Recording , который может предложить способ сделать это. Кроме этого, вам в значительной степени придется использовать dump Path либо файловую систему в памяти , либо, возможно, даже реальный временный файл.

Комментарии:

1. Но будьте осторожны, запись::GetStream() не будет работать с записью в памяти. Данные всегда должны быть на диске. Javadoc для JDK 17, чтобы прояснить это. docs.oracle.com/en/java/javase/17/docs/api/jdk.jfr/jdk/jfr/.