我试图用Java写入Json格式,但当文件大小> 1GB时遇到NullPointerException。任何人都可以帮助我解决这个问题吗?当文件大小大于1GB时,Gson.toJson抛出NullPointerException
该代码不断生成Json文件,并且文件的大小不断增加。一旦文件大小> 1GB,代码将抛出异常,如下所示。我使用不同的数据集进行测试,所以我不认为这是数据问题。我的猜测是Java中的Gson.toJson有一个大小限制。
我的代码是:
private HashMap<String,HashSet<Token>> tokenCounter = new HashMap<String,HashSet<Token>>();
....
private void writeToFile(){
try {
PrintWriter out = new PrintWriter(outputFileName);
out.println(gson.toJson(tokenCounter));
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
它抛出一个例外是:
java.lang.NullPointerException
at java.lang.String.<init>(String.java:301)
at java.lang.StringBuffer.toString(StringBuffer.java:790)
at java.io.StringWriter.toString(StringWriter.java:204)
at com.google.gson.Gson.toJson(Gson.java:481)
at com.google.gson.Gson.toJson(Gson.java:460)
at com.ebay.classification.discovery.DailyDiscovery.writeToFile(DailyDiscovery.java:181)
at com.ebay.classification.discovery.DailyDiscovery.run(DailyDiscovery.java:169)
at com.ebay.classification.discovery.TestDailyDiscoveryContinue.run(TestDailyDiscoveryContinue.java:142)
at com.ebay.classification.discovery.TestDailyDiscoveryContinue.main(TestDailyDiscoveryContinue.java:245)
奇怪,堆栈跟踪指示'的char []'从传递['StringBuffer.toString'](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/lang/StringBuffer.java#StringBuffer.toString%28% 29)是'空'... – 2013-05-04 23:44:20
是的,我也觉得有点奇怪。我尝试了几个不同的数据集,并且在1GB点出现相同的异常: – Long 2013-05-04 23:51:19
@jlordo这似乎是不可能的,因为数组创建需要一个“int”参数。 int可以溢出,但会抛出'NegativeArraySizeException'。 – 2013-05-04 23:57:46