簡體   English   中英

Java 中可用的最佳可調整大小的字節緩沖區是什么?

[英]What is the best resizable byte buffer available in Java?

我需要 Java 中的字節緩沖區 class 用於單線程使用。 緩沖區滿時應該調整大小,而不是拋出異常或其他東西。 對我來說非常重要的問題是性能。

你會推薦什么?

添加:目前我使用 ByteBuffer 但它無法調整大小。 我需要一個可以調整大小的。

有什么理由不使用無聊的普通ByteArrayOutputStream嗎?

正如 miku 上面提到的, Evan Jones 給出了不同類型的評論,並表明它非常依賴於應用程序。 因此,在不了解更多細節的情況下,很難推測。

我將從 ByteArrayOutputStream 開始,並且只有在分析表明這是您的性能瓶頸轉移到其他東西時。 通常,當您認為緩沖區代碼是瓶頸時,它實際上是網絡或其他 IO - 等到分析顯示您需要優化,然后再浪費時間尋找替代品。

如果您要轉移到其他地方,那么您需要考慮的其他因素:

  • 你說你是單線程使用,所以不需要BAOS的同步
  • 填充和饋入的緩沖區是什么? 如果任一端已經連接到使用 Java NIO,那么使用直接ByteBuffer非常有效。
  • 您使用的是循環緩沖區還是普通線性緩沖區? 如果你是,那么Ostermiller Utils非常有效,並且 GPL

您可以使用直接的 ByteBuffer。 直接 memory 使用虛擬 memory 啟動僅在使用時分配給應用程序。 即它使用的主要 memory 的數量會自動重新調整大小。

創建一個比您需要的更大的直接 ByteBuffer,它只會消耗您使用的內容。

您還可以編寫手動代碼來連續檢查緩沖區內容,如果它已滿,則創建一個更大的新緩沖區並移動該新緩沖區中的所有數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM