Java循环读取文件导致内存溢出!

weixin_38050648 2016-04-26 04:00:36
在主函数的循环中,创建一个ReadNodesEdges类对象并处理,当进入下次循环后前一项创建的对象不是应该会被自动GC么。打开GC显示后,老年代内存随着每次循环不断加大,到固定位置后报错——“java.lang.OutOfMemoryError: GC overhead limit exceeded”。 求解应该怎么处理问题?? public class Main_test { public static void main(String[] args) { File[] FileList = new File("D:/Samples/B_func_binary/").listFiles();// 获取目录下所有子目录对象 for (int i = 0; i < FileList.length; i++) { if (FileList[i] != null) { System.out.println(FileList[i].getAbsolutePath());// getAbsolutePath()绝对地址 ReadNodesEdges readNodesEdges = new ReadNodesEdges(); //问题出现在这个类中 readNodesEdges.script("D:/Samples/B_gexf/"+ FileList[i].getName().replaceAll("txt", "gexf"));// getName()文件名 } } } } class ReadNodesEdges { public void script(String path) { //Init a project - and therefore a workspace ProjectController pc = Lookup.getDefault().lookup(ProjectController.class); pc.newProject(); Workspace workspace = pc.getCurrentWorkspace(); //Get controllers and models ImportController importController = Lookup.getDefault().lookup(ImportController.class); //Import file Container container; try { File file = new File(path); container = importController.importFile(file); container.getLoader().setEdgeDefault(EdgeDefault.DIRECTED); //Force DIRECTED container.setAllowAutoNode(false); //Don't create missing nodes } catch (Exception ex) { ex.printStackTrace(); return; } //这行是关键所在,去掉这行则没有溢出,但是也无法读取数据 importController.process(container, new DefaultProcessor(), workspace); GraphModel graphModel = Lookup.getDefault().lookup(GraphController.class).getModel(); importController = null; } }
...全文
301 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复

435

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧