一个具有挑战性的问题,如何用java程序让系统死机? 我试着用死循环里不挺的new对象,但是观察内存发现虽然销号内存,但是过了一会内存的值又自动上来了,好像是系统自动运行了gc,请问有什么办法能让系统死机呢? 或者说能尽快的把内存耗光呢?分不够再加 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 设置一个没有没回返回的递归调用,还有就是尽量把这个方法里的东东写得复杂一点,for example:public void recursiveMethod(){ for(int i=0; i<10000; i++) i += i; recursiveMethod();} 不停地递归调用,最多JVM会抛出stackoverlowerror, 但不会死机,你说的死机可能的原因是内存耗尽,或占用了100%CPU, 可以在你的程序中,创建大量线程,并无限等待,无人来notify. 好像很难。偶没有听说过java可以搞垮os,jni之类的除外 打开 Socket,不停的连接后不关 , 不停的创建临时文件,超出用户配额,无穷递归,占着茅坑不拉屎 , 死循环。好像有时候只是 占用 100%, 并不死。 同意楼上的,windows下用C要系统死还是容易的不过linux/solaris/unix下就难了(除非你有root权限) 同意楼上的,lz的方法肯定值得商榷,别忘了java的垃圾回收阿,这种resource leak很难成功 好像很难。偶没有听说过java可以搞垮os,jni之类的除外我同意这种观点如果仅仅是要让内存耗或者cpu耗完很容易,但这样最多抛出一个异常,程序中止,但是不会影响到操作系统的,如果要耗完内存太容易了。如果使用JNI肯定可以,但这样就不是纯java程序了。 要耗尽内存很容易,写个无穷递归,里面有分配空间的就可以了但这是虚拟机限制范围内的内存限制,根本不可能搞垮os要搞垮os,window下最好就是用jni调c函数。linux/unix/solaris就相当困难了,除非你有root权限 怎么刚delphi版的一个人要问怎么让系统死机,刚转到java版又来一个呵呵 能开文件,开sock,导致系统不正常,但是要死机估计是很难,VM很难把系统搞垮 我看啊干脆把机子砸了算了,让他死了再也起不来,用纯java是不可能做到的,如果能让你这样,java的优势都是说出来的? hehe,估计你淘来个486机器可以实现你的愿望,楼上说的有理,java的机制就是不让程序员为系统资源耗费更多精力,所以你也不要耗费精力了,还是研究怎么把0.1的程序变成0.01的吧 难...........................调用windows的程序吧....要不很难弄死机......................... 坐下好好学习中...-------------------------------------------------------------------------您好,网美书店全场5折-8.8折,深圳东莞所有地区送书上门(免配送费),书到付款!网美书店网址:http://www.wanme.com咨询QQ: 419777139 都是一群疯子,为什么想让糸统死机,我在windws用汇编写一个极大的循环中写了一句winexec调用外部程序,结果糸统马上没反应 干吗啊?写这种程序搞什么呀,VM实际上在外面挡着,不可能死机的,顶多程序down掉 想要系统宕掉就要先菪掉VM,但是宕了VM,程序也就宕了,好像纯JAVA很难阿 用JNI啦。上面很多方法都只是让JVM死掉,但系统还没有。只有用JNI调用系统底层的API才能彻底。 Runtime.getRuntime().exec("shutdown -r");XP/unix 下应该有效 释放锁时用对象.wait()还是用线程的wait()方法 释放锁时用对象.wait()还是就用wait(),就用wait()是不是线程的方法。 楼主试试swt os类扩展。。http://www.eclipseworld.org/read.php?tid=69&fpage=1或自已向下扩展些API。。试试疯狂hook windows进程hoho~~ 大家的回答真是不到位啊,谁说java的程序不能死机啊,下面我给大家一个简单的代码,当然还有很多种方式的,不过问题的关键是在java运行的时候需要给jvm一些参数:public class Virus{ public static void main(String args[]) throws Exception{ for(int i = 1;;i++){ double dv[][][][][][] = new double[i][i+1][i+1][i+1][i+1][i+1]; try{ dv[i-1][i-1][i-1][i-1][i-1][i-1] = Double.MAX_VALUE; System.out.println("dv["+i+"]["+i+"]["+i+"] = "+dv[i-1][i-1][i-1][i-1][i-1][i-1]); } catch(Exception e){} } }}java -Xms256m -Xmx256m Virus注: 这里的内存设置为和你的物理内存一样大就可以。另外,用线程的方式也是可以的,或者疯狂的读大的IO,然后用每次一个byte的方式读出来,效果明显。最后感谢大家的积极参与。 JAVA 写完的程序怎么生成 exe 格式的啊 关于框架的一个问题! 项目由jbuilder迁移到myeclipse上的GUI问题 JAVA界面图片问题 JBuilder9 下建立的applet问题 Applet连接数据库问题?? public Rect(int width,int height){this(0,0,width,height);} 请推荐几本JAVA的好书 java函数 java能做短信息发送软件吗?接口是什么?谁能明确说说这方面知识 关于exec的使用。 怎么把字符串转为java.sql.Date 类型?
{
for(int i=0; i<10000; i++)
i += i;
recursiveMethod();
}
无穷递归,占着茅坑不拉屎 , 死循环。好像有时候只是 占用 100%, 并不死。
不过linux/solaris/unix下就难了(除非你有root权限)
我同意这种观点
如果仅仅是要让内存耗或者cpu耗完很容易,但这样最多抛出一个异常,程序中止,但是不会影响到操作系统的,如果要耗完内存太容易了。如果使用JNI肯定可以,但这样就不是纯java程序了。
呵呵
调用windows的程序吧....要不很难弄死机.........................
-------------------------------------------------------------------------
您好,网美书店全场5折-8.8折,深圳东莞所有地区送书上门(免配送费),书到付款!网美书店网址:http://www.wanme.com咨询QQ: 419777139
http://www.eclipseworld.org/read.php?tid=69&fpage=1或自已向下扩展些API。。试试疯狂hook windows进程hoho~~
public class Virus{
public static void main(String args[]) throws Exception{
for(int i = 1;;i++){
double dv[][][][][][] = new double[i][i+1][i+1][i+1][i+1][i+1];
try{
dv[i-1][i-1][i-1][i-1][i-1][i-1] = Double.MAX_VALUE;
System.out.println("dv["+i+"]["+i+"]["+i+"] = "+dv[i-1][i-1][i-1][i-1][i-1][i-1]);
}
catch(Exception e){}
}
}
}
java -Xms256m -Xmx256m Virus
注: 这里的内存设置为和你的物理内存一样大就可以。
另外,用线程的方式也是可以的,或者疯狂的读大的IO,然后用每次一个byte的方式读出来,效果明显。最后感谢大家的积极参与。