@eldqs

Как можно намеренно уронить JVM?

Как можно уронить JVM, слышал что могут спросить это на собеседовании, да и самому стало интересно.
  • Вопрос задан
  • 1450 просмотров
Решения вопроса 4
vlad20012
@vlad20012
Ну-ну, все ваши примеры - всего лишь необработанные исключения. Обычно под "уронить" подразумевают более веселые вещи. Давайте возьмем Unsafe и прочтем байт по нулевому адресу.
import sun.misc.Unsafe;

public class CrashTheJVM
{
    private static final Unsafe UNSAFE = createUnsafe();

    private static Unsafe createUnsafe()
    {
        try
        {
            Field uf = Unsafe.class.getDeclaredField("theUnsafe");
            uf.setAccessible(true);
            return (Unsafe) uf.get(null);
        }
        catch (Exception e)
        {
            throw new RuntimeException(e);
        }
    }
	
    public static void main(String[] args)
    {
        UNSAFE.getByte(0);
    }
}

Сегфолт! 100% падение. Ну, и если это запрещает делать SecurityManager или реализация JVM не поддерживает Unsafe, мы таки получим необработанное исключение.
Ответ написан
Комментировать
@cthulhudx
Заставить JVM выбросить какой-либо из Error-ов, например:

public static void main(String[] args) {
long[] array = new long[Integer.MAX_VALUE];
}

Повлечет за собой
Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
Ответ написан
Комментировать
TwerTrue
@TwerTrue
Молодой и неопытный разработчик
У течкой памяти, если её не будет хватать то упадёт
Ответ написан
  • Деление на ноль
  • Переполнение стека
  • Переполнение кучи
  • Доступ по нулевой ссылке
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы