StackOverFlow在GAE上但不是当地的

时间:2017-02-18 19:56:11

标签: java json google-app-engine

    User user = OfyService.ofy().load().type(User.class).id(id).now();
    JSONObject jsonUser = new JSONObject();
    jsonUser.put("user_id", user.getUser_id());
    jsonUser.put("device_id", user.getDevice_id());
    jsonUser.put("email", user.getEmail());
    jsonUser.put("name", user.getName());
    jsonUser.put("push_token", user.getPush_token());
    jsonUser.put("user_pic", user.getUser_pic());
    jsonUser.put("userWishList", ObjectifyService.ofy().load().refs(user.getUserWishList()).values());
   return Response.status(200).entity((jsonUser.toString())).build();

此代码在localhost上正常工作,但在部署后不会正常工作,发生stackoverflow:

Caused by: java.lang.StackOverflowError 
    at java.security.ProtectionDomain.implies(ProtectionDomain.java:300) 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:462) 
    at java.security.AccessController.checkPermission(AccessController.java:698) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 
    at java.lang.reflect.Method.invoke(Method.java:47) 
    at org.json.JSONObject.populateMap(JSONObject.java:1167) 
    at org.json.JSONObject.<init>(JSONObject.java:281)

我不知道为什么会出现这种情况,在localhost上我调试了它并正常工作,因为它应该也是我看不到任何递归调用这个错误,也许lib间接地做这个。 任何帮助将非常感激!

1 个答案:

答案 0 :(得分:0)

如果相同的代码在不同的环境中产生不同的结果(例如:StackOverflowError),您应该查看JVM的配置。

例如,堆栈的大小在不同的JVM上可能会有所不同。您可以增加堆栈的大小,以允许更多的调用。根据安装的Java虚拟机(JVM),默认线程堆栈大小可能等于512KB或1MB。您可以使用-Xss标志增加线程堆栈大小。可以通过项目配置或命令行指定此标志。

相关问题