使用HashMap进行Java内存管理

Wil*_*man 2 java memory memory-management hashmap map

我正在开发一个应用程序,它将大量数据从数据库读入a Map<String,Map<String,Map<String,String>>>,处理它,并使用内部xml编写器将处理后的报告写入电子表格.整个运行大约需要12个小时.

我发现我得到了

Exception in thread "CursorController-Thread-0" java.lang.OutOfMemoryError: Java heap space
    at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:45)
    at java.lang.StringBuilder.<init>(StringBuilder.java:68)
Run Code Online (Sandbox Code Playgroud)

当我尝试编写这个jumbo文件时.出于这个原因,我认为最好在Map<String,Map<String,String>>完成处理时编写每个(注意更深层).

我的问题是,我怎样才能确保Map<String,Map<String,String>>在写完之后它不会保留在内存中,因为Map >>仍然会包含它?

aio*_*obe 7

一旦你完成Map<String,Map<String,String>>了按键的映射,"key"你就可以了

hugeMap.remove("key");
Run Code Online (Sandbox Code Playgroud)

这将"清空"该条目hugeMap并使其Map<String,Map<String,String>>符合垃圾收集条件(即,永远不会导致堆空间内存不足).