" Java堆空间"我试图从网络服务获得响应时出错

时间:2014-08-04 20:52:04

标签: java web-services rest response

Java堆空间错误。 我想从网页上获得一个大的String结果,请查看下面的示例。 但

String response = resource.get(String.class);

将始终返回" java.lang.OutOfMemoryError:Java堆空间"错误。问题是网页太大了。是否有流媒体解决方案或其他解决方案,我可以使用而不是"字符串响应"?

感谢。

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;

public class helloWorldClient {
public helloWorldClient() {
    super();
}

public static void main(String[] args) {
    Client c = Client.create();
    WebResource resource = c.resource("http://localhost:7101/RESTfulService-Project1-context-root/jersey/helloWorld");
    String response = resource.get(String.class);
    }
}

2 个答案:

答案 0 :(得分:0)

我在此页https://jersey.java.net/documentation/1.18/client-api.html

中看到了以下示例

你可以试试这个:

InputStream in = resource.get(InputStream.class);
// Read from the stream
in.close();

答案 1 :(得分:0)

当您尝试将更多数据添加到内存中的堆空间区域时,会触发您遇到的“java.lang.OutOfMemoryError:Java堆空间”错误,但此数据的大小大于JVM可容纳的数据大小Java堆空间。

堆大小是JVM初始化时设置的阈值。如果您未自行设置,则使用特定于平台的默认值。这是一个合理的安全网,可以防止例如泄漏过程,否则会使整个机器瘫痪。

解决此问题的最简单方法是增加(或添加,如果缺少)以下参数设置java进程的最大堆大小,类似于允许1GB堆的以下示例:

java -Xmx1024m com.mycompany.MyClass