Gson - problemy z pamięcią. Wykorzystanie JsonWriter?

0

Cześć

Mam sobie obiekt, który chcę zserializować. Wykorzystuję do tego Gsona. Problem polega na tym, że w niektórych przypadkach, gdzie rekordów jest bardzo dużo następuje problem z pamięcią (Java heap space). Pomimo poszerzenia parametrów JVM nadal to występuje. Wyczytałem, że można spróbować streamu za pomocą JsonWriter.
Czytam jednak poradniki i praktycznie w każdym tworzone są "ręcznie" pary klucz-wartość dla obiektu. U mnie takich par byłoby 150, więc jest to trochę żmudny proces :-/
I przechodząc do meritum czy rozwiązanie problemu z brakiem pamięci to wykorzystanie JsonWriter? Jeżeli tak to jak z tego skorzystać?

0

Ile masz tych obiektów? 10 milionów? Wtedy jakby problemy z pamięcią mogą powstać.
Poza tym, jeśli masz kilka milionów obiektów to rozwiązaniem będzie użycie czegoś w stylu
https://google.github.io/gson/apidocs/com/google/gson/Gson.html#toJson-java.lang.Object-java.lang.reflect.Type-com.google.gson.stream.JsonWriter-
Nic nie musisz ręcznie kodować.
Strzelam jakkolwiek, że Ty masz zupełnie gdzie indziej problem. Pokaż kod.

0

10 milionów to na pewno niet :P
Natomiast problem jest i nie wiem czemu tak naprawdę mi to wywala (problem nie występuje dla wszystkich obiektów, lecz tylko niektórych)
Kod jest następujący:

private void sendFile(sessContext sc){
String shipId = sc.getRequest().getParameter("shipid");
Ship ship = m_ship.find(Long.parseLong(shipId));
Gson gson = new GsonBuilder()
                .excludeFieldsWithModifiers(Modifier.STATIC, Modifier.TRANSIENT, Modifier.VOLATILE)
                .setPrettyPrinting()
                .create();

try{
String toJson = gson.toJson(ship); // to już nie daje rady wykonać
sendFile(sc,ship);}
catch(Excepiton e){
 e.printStackTrace();
        }
}

1

Coś się zapętla.
@JsonIgnore
Na odpowiednim polu załatwi sprawę

1 użytkowników online, w tym zalogowanych: 0, gości: 1