Java多次调用constructor.newInstance(String)时出堆空间错误

时间:2012-11-29 05:38:14

标签: java

String type = “ClassNames”;
MyInterface mi = (MyInterface) constructor.newInstance(type);

在我的程序中多次调用上面的代码片段(大约3000个类),这导致堆空间错误。 堆大小达到1024mb。 保持堆大小的任何解决方法? 谢谢!

界面

public interface MyInterface { 
    public String[] getRowHeader(); 
    public String[] getHeaderTable();    
    public String[][] getDataForSearch();
    public String getInfoText();
}

公共类实施

public TablePanel() {
    try {
        guiInit();
    } 
    catch (Exception exception) {
        exception.printStackTrace();
    }
}

这个guiInit()执行swing组件初始化。

在同一个类中,方法如下所示实现

public String[][] getDataForSearch()  
{
    return rowNames;
}

1 个答案:

答案 0 :(得分:1)

没有人知道你在代码中做了什么,没有人能够帮助你。解决方案取决于你在做什么。

有内存泄漏吗?比如,你仍然持有对不再需要的对象实例的引用,这会阻止GC释放内存吗?

如果你确实需要那么多实例,你可以考虑对你的类进行一些重新设计,以减少内存,例如,使用Fly-weight模式,或尝试重用已经创建的实例,或者使用更多实例节省空间的数据结构等。

另外,请考虑重新设计逻辑,以避免分配那么多对象。例如,如果您的应用程序正在处理输入文件,请避免“读取整个文件并将其全部转换为POJO,然后执行逻辑”。看看你是否可以“部分读取文件并创建相应的POJO,为该部分做逻辑,然后转到下一部分”。