2012-05-21 28 views
-3

我有此JSON對象,我從一個開放的插座得到我:的java的JSONObject初始化returen java.lang.OutOfMemoryError Java堆

{ 
"action" : "login", 
"id" : "1554", 
"name": "asaf", 
"lat" : "26.519966", 
"long" : "-4.151437", 
"radius":"0", 
    "data":[ 
      {"id":"12345"}, 
      {"id":"1234"}, 
      {"id":"123"} 
     ] 
} 

我的代碼裏面,當我做:

stream = new JSONObject(input); 

(輸入是從插座中我的對象) 我得到java.lang.OutOfMemoryError Java堆..

不能真正理解爲什麼...

堆棧跟蹤:

Exception in thread "Worker for Socket:  Socket[addr=/0:0:0:0:0:0:0:1,port=52571,localport=9001]" java.lang.OutOfMemoryError: Java  heap space 
at java.util.Arrays.copyOf(Unknown Source) 
at java.util.Arrays.copyOf(Unknown Source) 
at java.util.ArrayList.ensureCapacity(Unknown Source) 
at java.util.ArrayList.add(Unknown Source) 
at org.json.JSONArray.<init>(JSONArray.java:117) 
at org.json.JSONTokener.nextValue(JSONTokener.java:322) 
at org.json.JSONObject.<init>(JSONObject.java:205) 
at ServerWorker.run(ServerWorker.java:80) 
+6

後堆棧跟蹤,請。 –

+0

我已將它添加到我的問題 –

+0

請填寫您的完整代碼。 –

回答

1

或許你可以做到這樣的,如果你的JSON響應很大:

stream = new JSONObject(new JSONTokener(input)): 
+0

爲什麼這樣更好? –

+0

關注此鏈接.http://stackoverflow.com/questions/5842201/out-of-memory-error-when-putting-large-json-inputstream-to-string – UVM