-1
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() 执行摆动组件初始化。

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

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

1 回答 1

1

没有人能在不知道您在代码中做什么的情况下帮助您。解决方案很大程度上取决于您在做什么。

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

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

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

于 2012-11-29T06:13:25.410 回答