Я ожидаю, что код заставит JVM выйти и сбой, и я вижу выход JVM, но я не вижу журнала сбоев JVM (hs_err_pid), и команда «sudo egrep -i 'java' /var/log/messages" ничего не имеет сообщение, так что это не linux убивает процесс. но я вижу это сообщение «Процесс завершен с кодом выхода 1», поэтому вопрос в том, что заставляет jvm выйти
Начните с: java -Xmx50M -Xms50M -XX:ErrorFile=/home/wks/javacode/java_error.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/home/wks/javacode/gc. журнал
import java.util.ArrayList;
import java.util.List;
public class MakeVmAbort {
static List<Thread> ts = new ArrayList<>();
static List<byte[]> bs = new ArrayList<>();
public static void main(String[] args) {
try {
while (true) {
Thread t = new Thread(() -> {
while (true) {
bs.add(new byte[1024 * 1024]);
try {
Thread.sleep(500L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
t.start();
ts.add(t);
}
} catch (Exception e) {
System.out.println(e.getStackTrace());
}
}
}
1 ответ
Выход JVM из-за основного потока OOM, поэтому выход JVM, когда завершается последний поток, не являющийся демоном, спасибо за @apangin
Похожие вопросы
Новые вопросы
jvm
Виртуальная машина Java (JVM) позволяет ряду компьютерных программ и структур данных использовать модель виртуальной машины для выполнения других компьютерных программ и сценариев. Используйте этот тег для вопросов, касающихся инструментов, предоставляемых JVM, или того, как он работает в конкретном сценарии.
main
также генерируетOutOfMemoryError
.