如何用Java创建一个内存泄露

Vancl 发布于 2011/07/19 14:19
阅读 839
收藏 3

@老古董 竟然问我这样的问题,好嘛,我转述于此。

如果用java创建一个内存泄露?stupid question,哈哈哈。

大家编编看吧

加载中
0
红薯
红薯
你别说,这个在实际中有用,可用来模拟内存泄漏的情况,用于学习研究如何防止内存泄漏
红薯
红薯
@Vancl : 我可没有哦
Vancl
Vancl
@红薯 也给个demo呗
0
牛哥
牛哥
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import sun.misc.Unsafe;


public class TestUnsafe {

    public static void main(String[] args) throws Exception{
        Class unsafeClass = Class.forName("sun.misc.Unsafe");
        Field f = unsafeClass.getDeclaredField("theUnsafe");
        f.setAccessible(true);
        Unsafe unsafe = (Unsafe) f.get(null);
        System.out.print("4..3..2..1...");
        try
        {
            for(;;)
                unsafe.allocateMemory(1024*1024);
        } catch(Error e) {
            System.out.println("Boom :)");
            e.printStackTrace();
        }
    }

}
泄了没?
晕dows
晕dows
还有,关掉交换分区后,最后程序被系统自动杀掉了。。。没有Boom
晕dows
晕dows
跑这段代码千万要关掉交换分区。。。被写硬盘搞的生不如死,只能重启,血的教训啊。
0
jeffsui
jeffsui

泄了能肿末样啊?

0
OSC名字纠查会主席
OSC名字纠查会主席
不断在开线程(不死的),很快就内存泄露了。一般搞性能测试的人会做这个实验。
0
antipro
antipro
启动虚拟机的时候给一个参数,只用很少的内存。在程序里面不断创建对象,就泄漏了。
0
Cray
Cray
把java heap设置很小, 再run个程序...应该就可以了
0
SeekerLee
SeekerLee

这篇文章吧各种情况列举了一遍还有例子。

http://www.iteye.com/topic/802573

SeekerLee
SeekerLee
@swanliu : 哇塞,这高级玩意还没用过呢。
swanliu
swanliu
这里提到的DirectMemory是个隐含的大坑。某些api的古代实现里为了加速使用了这个,如果赶上慢速网络或者长连接,经常歇菜。。
0
烈冰
烈冰
内存泄漏和内存不足是两回事吧
YoungIceberg
YoungIceberg
+1 (没找到按钮)
慢慢爬
慢慢爬
+1
0
xyz555
xyz555

楼上+1

Java没有指针,又有自己的垃圾清理机制,这些都是针对c/c++内存泄漏的措施。如果要用Java写个内存泄漏,不是绝对不可以,是比较有难度。

xyz555
xyz555
@YoungIceberg : 语言平等是什么意思?
YoungIceberg
YoungIceberg
“内存泄露”在概念上是语言平等的:)
返回顶部
顶部