在Java8中创建内存泄漏

在Java8中创建内存泄漏,java,memory-leaks,java-8,Java,Memory Leaks,Java 8,同样的问题再次得到了回答(),但是现在Java8删除了永久性生成,我认为更新这个主题是有用的,因为大多数答案都依赖于耗尽永久性生成的可用空间 那么,在Java 8中创建内存泄漏的最简单方法是什么呢?我认为一个常见的内部类内存泄漏是可行的。来自互联网的示例: public class LeakFactory {//Just so that we have some data to leak int myID = 0; // Necessary because our Leak class

同样的问题再次得到了回答(),但是现在Java8删除了永久性生成,我认为更新这个主题是有用的,因为大多数答案都依赖于耗尽永久性生成的可用空间


那么,在Java 8中创建内存泄漏的最简单方法是什么呢?

我认为一个常见的内部类内存泄漏是可行的。来自互联网的示例:

public class LeakFactory
{//Just so that we have some data to leak
    int myID = 0;
// Necessary because our Leak class is non-static
    public Leak createLeak()
    {
        return new Leak();
    }

// Mass Manufactured Leak class
    public class Leak
    {//Again for a little data.
       int size = 1;
    }
}

public class SwissCheese
{//Can't have swiss cheese without some holes
    public Leak[] myHoles;

    public SwissCheese()
    {
    // let's get the holes and store them.
        myHoles = new Leak[1000];

        for (int i = 0; i++; i<1000)
        {//Store them in the class member
            myHoles[i] = new LeakFactory().createLeak();
        }

    // Yay! We're done! 

    // Buh-bye LeakFactory. I don't need you anymore...
    }
}
公共类泄漏工厂
{//只是为了让我们有一些数据泄露
int-myID=0;
//因为我们的泄漏类是非静态的,所以是必需的
公共泄漏createLeak()
{
返回新泄漏();
}
//批量制造泄漏等级
公共类泄漏
{//再次获取一些数据。
int size=1;
}
}
公务舱SwissCheese
{//不能吃没有洞的瑞士奶酪
公共漏洞[]我的洞;
公共SwissCheese()
{
//让我们把洞挖出来储存起来。
myHoles=新泄漏[1000];

对于(int i=0;i++;i)我不知道你链接的问题为什么幸存下来并获得了这么多的赞成票-它似乎不在本网站的主题中。@Floris什么是和不是“在主题中”因为StackOverflow已经发展了很多年。这个问题是在3年前发布的,当时问题和答案被允许更广泛。@mikeclark-我想是这样的。感谢“历史性的”透视图;我只在这里呆了一年多一点……是什么让你认为那些perm gen泄漏不再是泄漏?问题只会推迟到你的操作系统开始交换并且你的系统变慢。这不一定是对异常的改进。对你的链接问题的回答是误导性的,暗示内存泄漏必须发生内存泄漏也可能发生在堆上,代码非常明显,Java8在这方面没有任何改变。