Какое определение "во время работы виртуальной машины Java"?

От JVMS глава 6.3:

[...] любой из подклассов VirtualMachineError, определенных ниже [InternalError, OutOfMemoryError, StackOverflowError, UnknownError], может быть сброшен в любое время во время операции виртуальной машины Java

Как JVMS определяет фразу "в любое время во время работы виртуальной машины Java"?

Как текущие JVM интерпретируют эту фразу?

В частности, означает ли это, что четыре ошибки, java.lang.InternalError, java.lang.OutOfMemoryError, java.lang.StackOverflowError и java.lang.UnknownError, может быть сброшено между операторами?

// ....
A(); B(); C();
try {
     // nothing
} catch (InternalError | OutOfMemoryError | StackOverflowError | UnknownError e) {
     // may occur?
}
D(); E(); F();
try {
     ; // semi-colon
} catch (InternalError | OutOfMemoryError | StackOverflowError | UnknownError e) {
     // may occur?
}
G(); H(); I();
try {
     ; ; ;;  ;;;;; ; ; ;;; ;; ;; ;; ;; ; ;; ; ;; // ... semi-colons
} catch (InternalError | OutOfMemoryError | StackOverflowError | UnknownError e) {
     // may occur?
}
J(); K(); L();
// ....

Ответ 1

Виртуальная машина Java состоит из многих частей. Например, сборщик мусора работает как постоянный фон Thread. Он может выбросить один из этих Exception, и, возможно, это произойдет в любое время (особенно если ваш собственный код остановлен из-за gc)!

Из Основы сборки мусора Java

Что такое автоматическая сборка мусора?

Автоматическая сборка мусора - это процесс просмотра памяти кучи, определение того, какие объекты используются, а какие нет, и удаление неиспользуемых объектов. Объект, используемый для использования, или объект, на который ссылается, означает, что какая-то часть вашей программы все еще поддерживает указатель на этот объект. Неиспользованный объект или объект без ссылки больше не ссылаются ни на какую часть вашей программы. Таким образом, память, используемая неопубликованным объектом, может быть восстановлена.

TL;DR

Да. Они могут быть брошены между утверждениями.