Java Azure SDK OutofMemoryError

Java Azure SDK OutofMemoryError,java,azure,Java,Azure,我正在尝试使用Azure SDK将一个大文件(950MB)上载到Azure。我使用此处提供的示例代码: 不幸的是,这会导致OutOfMemoryError。可能是因为SDk试图将整个文件加载到内存中。我怎样才能避免这种情况 Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2271) ~[na:1.7.0_21] at java.io.Byte

我正在尝试使用Azure SDK将一个大文件(950MB)上载到Azure。我使用此处提供的示例代码:

不幸的是,这会导致OutOfMemoryError。可能是因为SDk试图将整个文件加载到内存中。我怎样才能避免这种情况

Caused by: java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2271) ~[na:1.7.0_21]
    at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113) ~[na:1.7.0_21]
    at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93) ~[na:1.7.0_21]
    at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140) ~[na:1.7.0_21]
    at sun.net.www.http.PosterOutputStream.write(PosterOutputStream.java:78) ~[na:1.7.0_21]
    at com.sun.jersey.api.client.CommittingOutputStream.write(CommittingOutputStream.java:90) ~[jersey-client-1.13.jar:1.13]
    at com.sun.jersey.core.util.ReaderWriter.writeTo(ReaderWriter.java:115) ~[jersey-core-1.13.jar:1.13]
    at com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider.writeTo(AbstractMessageReaderWriterProvider.java:76) ~[jersey-core-1.13.jar:1.13]
    at com.sun.jersey.core.impl.provider.entity.InputStreamProvider.writeTo(InputStreamProvider.java:98) ~[jersey-core-1.13.jar:1.13]
    at com.sun.jersey.core.impl.provider.entity.InputStreamProvider.writeTo(InputStreamProvider.java:59) ~[jersey-core-1.13.jar:1.13]
    at com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWriter.java:300) ~[jersey-client-1.13.jar:1.13]
    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:213) ~[jersey-client-1.13.jar:1.13]
    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149) ~[jersey-client-1.13.jar:1.13]
    at com.microsoft.windowsazure.services.media.implementation.SASTokenFilter.doHandle(SASTokenFilter.java:60) ~[microsoft-windowsazure-api-0.4.5.jar:na]
    at com.microsoft.windowsazure.services.core.IdempotentClientFilter.handle(IdempotentClientFilter.java:41) ~[microsoft-windowsazure-api-0.4.5.jar:na]
    at com.sun.jersey.api.client.Client.handle(Client.java:648) ~[jersey-client-1.13.jar:1.13]
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:680) ~[jersey-client-1.13.jar:1.13]
    at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) ~[jersey-client-1.13.jar:1.13]
    at com.sun.jersey.api.client.WebResource$Builder.put(WebResource.java:537) ~[jersey-client-1.13.jar:1.13]
    at com.microsoft.windowsazure.services.blob.implementation.BlobOperationRestProxy.createBlockBlob(BlobOperationRestProxy.java:544) ~[microsoft-windowsazure-api-0.4.5.jar:na]
    at com.microsoft.windowsazure.services.blob.implementation.BlobOperationRestProxy.createBlockBlob(BlobOperationRestProxy.java:529) ~[microsoft-windowsazure-api-0.4.5.jar:na]
    at com.microsoft.windowsazure.services.blob.implementation.BlobExceptionProcessor.createBlockBlob(BlobExceptionProcessor.java:419) ~[microsoft-windowsazure-api-0.4.5.jar:na]
    at com.microsoft.windowsazure.services.media.implementation.MediaBlobContainerWriter.createBlockBlob(MediaBlobContainerWriter.java:72) ~[microsoft-windowsazure-api-0.4.5.jar:na]

消息Java heap space指出,应用程序服务器似乎内存不足。使用
Xmx
变量增加为JVM分配的内存。例如:

java -Xmx1024M YourClass
相关的:


我认为解决方案是将文件拆分并分块发送。这个问题的答案因为未知原因被删除了,但它为我指明了正确的方向。我认为这应该是可行的:

缺少存储库