RestAssured.get (url) .statusCode вызывает java.lang.OutOfMemoryError: пространство кучи Java - PullRequest
0 голосов
/ 05 июля 2019

Я использую RestAssured.get (url) .statusCode (), чтобы увидеть, работает ли URL и отвечает ли он успешно (Код 200) или нет. В случае некоторых URL-адресов (например, url1) он работает правильно, но для некоторых URL-адресов (например, url2) это вызовет следующую ошибку:

String url1="http://www.bbsys.com/playersdemo.exe"
String url2="http://www.ezhomeinspectionsoftware.com/filestorage/EZ-Setup.exe"

оба эти URL приводят к загрузке файлов. Но второй загружает больший файл. Так что, вероятно, именно поэтому это вызывает исключение нехватки памяти. Мне нужно знать, как я могу справиться с такими случаями. Мне нужно получить ответ от большого количества разных URL. Вы рекомендуете использовать другую библиотеку, или я использую эту библиотеку неправильно?

 java.lang.OutOfMemoryError: Java heap space 
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3236)
    at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)
    at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
    at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
    at io.restassured.internal.util.IOUtils.toByteArray(IOUtils.java:31)
    at io.restassured.internal.http.GZIPEncoding$GZIPDecompressingEntity.getContent(GZIPEncoding.java:69)
    at org.apache.http.conn.BasicManagedEntity.getContent(BasicManagedEntity.java:85)
    at io.restassured.internal.http.HTTPBuilder.parseResponse(HTTPBuilder.java:545)
    at io.restassured.internal.RequestSpecificationImpl$RestAssuredHttpBuilder.super$2$parseResponse(RequestSpecificationImpl.groovy)
    at sun.reflect.GeneratedMethodAccessor108.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132)
    at io.restassured.internal.RequestSpecificationImpl$RestAssuredHttpBuilder.parseResponse(RequestSpecificationImpl.groovy:2137)
    at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:174)
    at io.restassured.internal.RequestSpecificationImpl$RestAssuredHttpBuilder.doRequest(RequestSpecificationImpl.groovy:2073)
    at io.restassured.internal.http.HTTPBuilder.doRequest(HTTPBuilder.java:494)
    at io.restassured.internal.http.HTTPBuilder.request(HTTPBuilder.java:451)
    at io.restassured.internal.http.HTTPBuilder$request$2.call(Unknown Source)
    at io.restassured.internal.RequestSpecificationImpl.sendHttpRequest(RequestSpecificationImpl.groovy:1450)
    at sun.reflect.GeneratedMethodAccessor96.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Вы действительно хотите загрузить файлы или только хотите проверить, жив ли URL?

Если не принять, взгляните на метод head (https://static.javadoc.io/io.rest-assured/rest-assured/3.0.7/io/restassured/RestAssured.html#head-java.lang.String-java.util.Map-),, чтобы отправить запрос головы без запуска загрузки.

В противном случае ваш единственный вариант - предоставить достаточно памяти, как предложил @Roberto.

0 голосов
/ 05 июля 2019

OOM или OOME (OutOfMemoryError) просто означает, что JVM не хватило памяти.Когда это происходит, у вас обычно есть 2 варианта:

  1. Разрешить JVM использовать больше памяти, используя аргумент -Xmx VM.Например, чтобы разрешить JVM использовать 1 ГБ (1024 МБ) памяти:
  2. Улучшение / исправление приложения, чтобы оно использовало меньше памяти.Для получения более подробной информации перейдите по этой ссылке

http://www.mkyong.com/eclipse/eclipse-java-lang-outofmemoryerror-java-heap-space/

...