2014-02-06 37 views
5

我們正在使用返回大量數據的REST服務。 在生產中,服務器硬件可以處理它。 我需要通過獲取我的本地計算機上的數據來測試REST服務, 無法處理大量數據。 我的本地機器是4G i5。 每當我打開服務時,都會出現內存異常。如何處理來自REST服務的大量數據

response.getStatus()返回200狀態。 但是,當使用輸入流閱讀器收集數據時,出現內存不足異常。

BufferedReader br = new BufferedReader(new 
InputStreamReader(newByteArrayInputStream(response.getEntity().getBytes()))); 

是否有任何其他方式來收集數據而不會觸及內存異常?

我試着把我的虛擬機大小推到2G,但它仍然不起作用。

+0

如何僅返回部分響應? – 2014-02-06 17:17:23

+0

寫入磁盤或寫入到/ dev/null – PeterMmm

+0

@Petey我需要用於寫入文件的byet數組,但在獲取字節失敗時'response.getEntity()。getBytes()' – om39a

回答

4

如果服務支持它,請在整個響應內容有效負載的範圍內使用HTTP標準方法requesting chunks

另一種方法(同樣,假設API支持它)是pagination

+0

這是一個很好的方法,我可以推薦。謝謝Brian! – om39a

2

您可以在REST服務配置中實施限制返回數據量的閾值設置。 在生產中,閾值將不會被設置或設置爲較大的值。 在您的測試環境中,您可以將閾值設置爲小的可管理值。