#java #debugging #compiler-optimization #bytebuffer
#java #отладка #оптимизация компилятора #bytebuffer
Вопрос:
byte[] arr;
ByteBuffer buffer = ByteBuffer.allocate(10);
buffer.put((byte) 0x00);
buffer.put(new byte[] {0x01, 0x02});
buffer.put(new byte[] {0x03, 0x04, 0x05});
buffer.put(new byte[] {0x06, 0x07, 0x08, 0x09});
arr = buffer.array();
for(byte c : arr) {
System.out.format("%d ", c);
}
Когда я запускаю приведенные выше строки кода, он выводит выходные данные так, как я хочу.
0 1 2 3 4 5 6 7 8 9
Когда я запускаю его с помощью Debug, я снова получаю желаемый результат.
0 1 2 3 4 5 6 7 8 9
Теперь я ставлю точку останова в любой строке. Когда я перемещаю приложение рукой в режиме отладки, добавляется только последняя последовательность байтов. Он фактически добавляет все массивы байтов, но добавляет их все, начиная с индекса 0, и результат
6 7 8 9 0 0 0 0 0 0
Я не знаю, почему так действует. Это проблема с отладчиком?
Я использую IntelljIdea и java1.8.0_162. Когда я устанавливаю параметры виртуальной машины -Djava.compiler=NONE, все работает нормально. Что изменил этот процесс?
Спасибо за вашу помощь.
Комментарии:
1. Похоже, вы щелкнули в своем отладчике таким образом, что он пропустил выполнение первых трех строк buffer.put.
2. Это невозможно. Я попытался поместить точку останова в первую строку кода. Я выполнил все команды одну за другой.