我正在寫一個java函數。該函數的返回類型是ArrayList<String>
。
當返回的ArrayList
有近100萬個元素時,可能會出現這種情況,它會穿過可用RAM並拋出異常。
我該如何處理這種情況。我不希望代碼由於例外而中斷。
有沒有一種方法可以指定抽取特定數量的元素,然後丟棄它們並處理接下來的幾個元素......就像緩衝區大小一樣?
下面是代碼我在做什麼:如何拉取ArrayList中的數據,直到RAM沒有耗盡
ArrayList<String> users = getUsers();
...
...
...
private ArrayList<String> getUsers() throws Exception{
//connect to MongoDB
ArrayList<String> userList = new ArrayList<String>();
userList = //get the list of users.
return userList;
}
我在想,當返回的列表跨越可用內存的限制,如果返回的名單過於龐大不會行ArrayList<String> users = getUsers();
拋出一個異常?
我該如何處理這種情況?
你可以給一個足夠大的容量到ArrayList構造函數,所以舊陣列的較大的新陣列無份發生。該方法可能應該不同,使用字節映射內存,也許使用包裝在GZippedOutputStream中的ByteArrayOutputStream。 –