ऐसा लगता है कि MappedByteBuffer.isLoaded() लगातार false
विंडोज पर लौटाता है। जब मैं बीएसडी यूनिक्स कहता हूं तो मुझे एक ही टेस्ट डेटा का उपयोग करके true
मिलता है।जावा मैपडबेटबफर .isLoaded()
मुझे चिंता करनी चाहिए? मैं मूल रूप से विंडोज़ पर सच होने के लिए isLoaded()
नहीं प्राप्त कर सकता हूं इससे कोई फर्क नहीं पड़ता कि मैं किस आकार का डेटा उपयोग करता हूं।
यहाँ संदर्भ के लिए अपने परीक्षण कोड है:
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.util.logging.Level;
import java.util.logging.Logger;
public class MemMapTest {
private static final String FILENAME = "mydata.dat";
private static final int MB_1 = 1048576; // one Mbyte
private static final byte[] testData = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // len = 10 bytes
public static void main(String[] args) throws FileNotFoundException, IOException {
// Create a 10 Mb dummy file and fill it with dummy data
RandomAccessFile testFile = new RandomAccessFile(FILENAME, "rw");
for (int i = 0; i < MB_1; i++) {
testFile.write(testData);
}
MappedByteBuffer mapbuf = testFile.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, MB_1 * 20).load();
testFile.close();
if (mapbuf.isLoaded()) {
System.out.println("File is loaded in memory");
} else {
System.out.println("File is NOT loaded in memory");
}
}
}
मैं समझता हूँ कि load()
के रूप में मैं यहाँ का उपयोग मैं isLoaded()
कुछ बिंदु पर सही वापस जाने के लिए उम्मीद करेंगे केवल एक संकेत है, लेकिन इस तरह के छोटे आकार के साथ है। जैसा कि कहा गया है कि यह विंडोज ओएस से संबंधित प्रतीत होता है। इसका मूल रूप से मतलब है कि isLoaded()
बिल्कुल कोई उपयोग नहीं है।
शायद मुझे यह जोड़ना चाहिए कि विंडोज़ पर मेरा MappedByteBuffer
बिल्कुल ठीक काम करता है और तारकीय प्रदर्शन के साथ भी isLoaded()
हमेशा झूठा रिटर्न देता है। इसलिए जब मैं कहता हूं कि यह लोड नहीं होता है तो मुझे वास्तव में विश्वास नहीं होता है।
विंडोज 7 पर परीक्षण किया गया, का उपयोग कर ओरेकल जावा 7 अद्यतन 9.