你如何使JVM崩溃?
我正在阅读一本关于编程技巧的书,其中作者问受访者,“你如何使JVM崩溃?” 我认为你可以通过编写一个无限的for循环来最终用完所有的内存。
任何人有任何想法?
最接近单个“答案”的是System.exit()
,它会立即终止JVM而不进行正确的清理。 但除此之外,本机代码和资源耗尽是最可能的答案。 或者,您可以在Sun的bug跟踪器上查看您的JVM版本中的错误,其中一些错误允许可重复的崩溃情况。 在32位版本(我们现在通常使用64位)接近4 Gb内存限制时,我们习惯了半定期崩溃。
我不会调用OutOfMemoryError或StackOverflowError引发崩溃。 这些只是正常的例外。 要真正让虚拟机崩溃,有三种方法:
对于最后一种方法,我有一个简短的例子,它会很好地使Sun Hotspot VM崩溃:
public class Crash {
public static void main(String[] args) {
Object[] o = null;
while (true) {
o = new Object[] {o};
}
}
}
这会导致GC中的堆栈溢出,因此您将不会得到StackOverflowError,而是包含hs_err *文件的实际崩溃。
JNI。 事实上,在JNI中,崩溃是默认的操作模式。 你必须加倍努力才能让它不会崩溃。
链接地址: http://www.djcxy.com/p/19897.html