用Java创建内存泄漏我刚刚进行了一次面试,我被要求创建一个内存泄漏用爪哇。不用说,我觉得自己很笨,根本不知道怎么开始创作。举个例子怎么样?
3 回答
慕森王
TA贡献1777条经验 获得超3个赞
应用程序创建一个长时间运行的线程(或者使用线程池更快地泄漏)。 线程通过一个(可选的自定义)ClassLoader加载一个类。 类分配大量内存(例如: new byte[1000000]
),在静态字段中存储对它的强引用,然后将对自身的引用存储在ThreadLocal中。分配额外的内存是可选的(泄漏Class实例就足够了),但是它会使泄漏的速度更快。 线程清除对自定义类或从其加载的ClassLoader的所有引用。 重复一遍。
更新
守着一只汪
TA贡献1872条经验 获得超3个赞
hashCode()
equals()
class BadKey { // no hashCode or equals(); public final String key; public BadKey(String key) { this.key = key; }}Map map = System.getProperties();map.put(new BadKey("key"), "value"); // Memory leak even if your threads die.
添加回答
举报
0/150
提交
取消