I have a big object I want to parse to json Jackson-mapper
.
It works fine, till the object becomes too big.
I'm using intellij on mac.
code:
private String serializeToJson(T item) {
String json;
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
try {
json = ow.writeValueAsString(item);
} catch (IOException e) {
e.printStackTrace();
json = "";
}
return json;
}
error:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
:BL_generate FAILED
BUILD FAILED
Total time: 12 mins 14.491 secs
at java.util.Arrays.copyOfRange(Arrays.java:3664)
at java.lang.String.<init>(String.java:201)
at java.lang.StringBuilder.toString(StringBuilder.java:407)
at org.codehaus.jackson.util.TextBuffer.contentsAsString(TextBuffer.java:362)
at org.codehaus.jackson.io.SegmentedStringWriter.getAndClear(SegmentedStringWriter.java:100)
at org.codehaus.jackson.map.ObjectWriter.writeValueAsString(ObjectWriter.java:394)
at com.waze.routing.automation.io.string.JsonFileHandler.serializeToJson(JsonFileHandler.java:81)
I'm not sure how to split an object or to write it in parts (append to existing file)
i have tried to enlarge heap space, but it didn't help
task BL_generate(type: JavaExec) {
jvmArgs = ["-Xms1024m","-Xmx1024m"]
classpath sourceSets.main.runtimeClasspath
main = "com.m.BaselineGeneratorRunner"
}
i have read few posts: post1, post2
but i'm not sure how to use it in my case. How can streaming help me with one big object? (not array).