Считать файл как InputStream с Google Диска, выбросить OutOfMemoryError

Я пытаюсь прочитать файл (70 МБ) с Google Drive, код как:

Операционная среда: стандартная среда Appengine.

Credential credential = getCredentialManager().get(SessionUtil.getUserKey());
Drive drive = new Drive.Builder(TRANSPORT, JSON_FACTORY, credential).setApplicationName(APPLICATION_NAME).build();
InputStream inputStream  = drive.files().get({fileId}).executeMediaAsInputStream();

Журналы ошибок:

Caused by: java.lang.OutOfMemoryError: Java heap space
    at com.google.protobuf.ByteString.toByteArray(ByteString.java:615)
    at com.google.appengine.api.urlfetch.URLFetchServiceImpl.convertFromPb(URLFetchServiceImpl.java:247)
    at com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:61)
    at com.google.api.client.http.javanet.NetHttpResponse.<init>(NetHttpResponse.java:37)
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:94)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeMedia(AbstractGoogleClientRequest.java:380)
    at com.google.api.services.drive.Drive$Files$Get.executeMedia(Drive.java:2727)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeMediaAsInputStream(AbstractGoogleClientRequest.java:523)
    at com.google.api.services.drive.Drive$Files$Get.executeMediaAsInputStream(Drive.java:2722)
    at com.deepnet.idigisign.services.plugin.goolgeDrive.GoogleDrive.file(GoogleDrive.java:178)

почему есть метод toByteArray(), когда я читаю файл как InputStream. Может ли какое-нибудь тело мне помочь?

0 ответов

Другие вопросы по тегам