csvファイルをJSONファイルに変換しようとします。オブジェクトの200Kは、オブジェクトがcsvの1行を表します。java.lang.OutOfMemoryError:JavaオブジェクトをJson Stringに変換しようとすると、Javaのヒープスペース
私はJavaは32ビットとプロジェクトの設定VM引数にインストールされている:
-Xmx1024m
しかし私が手:行で
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
at java.lang.AbstractStringBuilder.append(Unknown Source)
at java.lang.StringBuffer.append(Unknown Source)
at java.io.StringWriter.write(Unknown Source)
at com.google.gson.stream.JsonWriter.string(JsonWriter.java:478)
at com.google.gson.stream.JsonWriter.value(JsonWriter.java:328)
at com.google.gson.Streams.write(Streams.java:113)
at com.google.gson.Streams.write(Streams.java:136)
at com.google.gson.Streams.write(Streams.java:136)
at com.google.gson.Streams.write(Streams.java:124)
at com.google.gson.Streams.write(Streams.java:136)
at com.google.gson.Gson.toJson(Gson.java:362)
at com.google.gson.Gson.toJson(Gson.java:346)
at com.google.gson.Gson.toJson(Gson.java:260)
at com.google.gson.Gson.toJson(Gson.java:240)
at ConvertFromCsv2JsonTWC.init(ConvertFromCsv2JsonTWC.java:186)
at ConvertFromCsv2JsonTWC.main(ConvertFromCsv2JsonTWC.java:48)
:それは正常に動作します
Gson gson = new Gson();
String output = gson.toJson(container);// <---- crash
50Kの行。
は、これは私が構築JSONのテンプレートです:
{
"crs": {
"type": "none"
},
"type": "FeatureCollection",
"features": [{
"geometry": {
"type": "Point"
},
"properties": {
"ap mac": "00:11:22:33:44:55",
"ssid": "WiFi",
"lat": "35.111111",
"long": "-118.11111",
"address": "370 xxxxxx",
"city": "xxxxxxx",
"state": "CA",
"zip code": "11111",
"country": "US",
"business n": "",
"location c": "Health Club/Gym",
"location q": "",
"indoor fla": "yes"
},
"point": [35.390284,
-118.9929],
"id": 0,
"type": "Feature"
},
{...},
...
200000...
をだから私はproperties
リストに
を200Kオブジェクトを持ってこの問題を回避するには、それぞれごとに別々のファイルの20Kを作成することですが、それは良くない道。
どうすればこの問題を解決できますか?
おかげで、
代わりに[ストリーム](https://sites.google.com/site/gson/streaming)できますか?それは大量のデータです。 –
@ElliottFrisch私が受け入れられるようにこのコメントを回答として投稿してください。ありがとうございました – snaggs