Ну-ну, все ваши примеры - всего лишь необработанные исключения. Обычно под "уронить" подразумевают более веселые вещи. Давайте возьмем 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, мы таки получим необработанное исключение.