memory-mapped-files

    0熱度

    1回答

    在這篇文章Reading and Writing from SSTable Perspective(是啊,很老的文章)作者說,indexdb和sstable文件使用內存映射文件預熱。 每個的SSTable行密鑰存儲在單獨的文件名爲index.db, 期間開始卡桑德拉「越過這些文件」,爲了熱身。 Cassandra使用內存映射文件,所以有希望,當在啓動期間讀取文件時,那麼首先訪問這些文件將從內存中服

    1熱度

    1回答

    目前我正在處理一個NumPy memmap數組,其中包含2,000,000 * 33 * 33 * 4(N * W * H * C)數據。我的程序讀取隨機(N)索引來自此陣列。 我有8GB的RAM,2TB硬盤。 HDD讀IO只有20M/s左右,RAM使用率保持在2.5GB。看起來有一個HDD瓶頸,因爲我正在檢索明顯不在memmap緩存中的隨機索引。因此,我希望memmap緩存儘可能使用RAM。 有

    1熱度

    1回答

    我正在嘗試處理大於我的記憶的數據文件。 我的理解到目前爲止,它將文件中的每個字節映射到虛擬內存中的地址。數據只在實際需要時纔讀取到實際內存中(例如訪問特定條目),並以稱爲頁面的塊讀取數據。 但是,如果我最終要處理該數據文件中的所有內容,那麼這是否意味着最終需要將所有內容都讀入真實內存?操作系統是否自動決定已釋放內存中的哪些數據部分以釋放額外數據的空間? 對於這個特定的項目,我正在Linux上使用P

    0熱度

    1回答

    我在理解MemoryMappedViewStream.PointerOffset屬性時遇到了一些問題。在這個簡單的單元測試中,我期望流的PointerOffset等於500000,但它是41248.流的長度是10000,但至少這是正確的。 _fakeDataPath是一個100萬字節的文件。 [TestMethod] public void CheckViewHasCorrectOffs

    1熱度

    1回答

    這些實際上是關於如何處理內存映射文件的三個問題。我所做的工作,但我錯過了一個權威的答案。 我得到我的ByteBuffer喜歡如下: raf = new RandomAccessFile(file, isReadonly ? "r" : "rw"); channel = raf.getChannel(); buffer = channel.map(mode, 0, channel.size())

    4熱度

    1回答

    我正在研究DNG/TIFF文件的讀寫器。由於有幾個選項可用於處理文件(FileInputStream,FileChannel,RandomAccessFile),我想知道哪種策略適合我的需求。 甲DNG/TIFF文件是一個組合物: 一些(5-20​​)小塊(幾十到幾百個字節) 很少(1-3)大的連續圖像的塊數據(高達100 MIB) 幾個(或許20-50)非常小的塊(4-16字節) 的整個文件的大

    0熱度

    1回答

    我已經使用MappedByteBuffer編寫了一個簡單的平坦哈希表(基於字節[])。但是,我經歷過,如果我在內存中構建散列表,然後將byte [] - 數組寫入MappedByteBuffer,速度會更快。 因此,它看起來像隨機寫入性能很爛,因爲操作系統經常刷新並且頁面被修改了很多次。有沒有辦法推遲頁面的沖洗? foobar的

    1熱度

    1回答

    我想增長一個內存映射文件,我成功增長了它,但我無法分配所有額外的空間我請求 - 我只是得到一個std::bad_alloc而不是。 這裏是顯示了在Linux上G ++作用的一例(我已經看到了同樣對MSVC我的「真實」代碼太): #include <memory> #include <sstream> #include <boost/interprocess/managed_mapped_fi

    0熱度

    1回答

    我一直在研究以編程方式添加資源的方法。 基本上我正在讀取內存映射文件中的一些值。我希望能夠創建一個資源字符串來存儲讀取的值。 例如: MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("test"); using (MemoryMappedViewAccessor accessor = mmf.CreateViewAccessor())

    1熱度

    1回答

    我試圖讓應用程序寫一個字節數組到內存映射流,應用程序B然後讀取這段內存。我已經到了他們可以讀寫的地步,但問題是我無法讓應用程序B等待新數據到達,現在它只是儘可能快地讀取數據。 搜索了一下後,我發現你可以給MemoryMappedStream.BeginRead指定一個回調,但我不確定如何使用這個回調來等待來自這個流的新數據。如何爲這種情況做回調?或者我正在尋找錯誤的方向?