Tôi đã cố gắng viết thành định dạng Json trong Java, nhưng gặp NullPointerException khi kích thước tệp là> 1GB. Bất cứ ai có thể giúp tôi để khắc phục vấn đề này?Gson.toJson ném NullPointerException khi kích thước tệp> 1GB
Mã sẽ tiếp tục tạo tệp Json và kích thước tệp tiếp tục tăng. Khi kích thước tệp> 1GB, mã sẽ ném ngoại lệ như được hiển thị bên dưới. Tôi đã sử dụng tập dữ liệu khác nhau để thử nghiệm, vì vậy tôi không nghĩ đó là vấn đề về dữ liệu. Tôi đoán là có một giới hạn kích thước cho Gson.toJson trong Java.
Mã của tôi là:
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();
}
}
Trường hợp ngoại lệ nó ném là:
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)
Strange, stacktrace chỉ ra 'cái char [] 'truyền từ ['StringBuffer.toString'] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/lang/StringBuffer.java#StringBuffer.toString%28% 29) là 'null' ... –
Vâng, tôi cũng cảm thấy rất lạ. Tôi đã thử nhiều tập dữ liệu khác nhau, và cùng một ngoại lệ xuất hiện ngay tại điểm 1GB: – Long
@jlordo Điều đó dường như là không thể, vì việc tạo mảng có một đối số 'int'. 'int' có thể tràn, nhưng điều đó sẽ ném một 'NegativeArraySizeException'. –