記憶的我有一個非常大的ByteBuffer
是大小約幾MB。當我在退房charset編碼
FileChannel fc = new FileInputStream(new File(decodedUri)).getChannel();
ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
CharBuffer cb;
if (encoding == null)
encoding = "UTF-8";
cb = Charset.forName(encoding).decode(bb);
運行ByteBuffer
我得到在堆棧跟蹤可以追溯到Charset.decode
所有其他時間OutOfMemoryError
。正是這條線觸發了錯誤。
cb = Charset.forName(encoding).decode(bb);
我該如何解決這個問題?
因爲應用程序被啓動的OutOfMemoryError第一次沒有被觸發,只有我第二次試圖啓動它,會出現此錯誤。我想知道是否有某種衝出緩衝區我需要做的?或者類似的東西?
你能請張貼堆棧跟蹤? – Isaac
這將是相當困難的。這是一個Android txt閱讀應用程序,通過點擊txt文件即可開始。所以我無法在模擬器上測試它,但必須在Android手機上測試。 –
@JasonChing - 你需要能夠訪問整個解碼文件一次?使用「CharsetDecoder」並從文件中讀取數據塊來提供它將允許您以增量方式處理文件。 – Jens