Считать файл как 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. Может ли какое-нибудь тело мне помочь?