Hat FileChannel#map
den gesamten für die resultierende Datei benötigten Speicherplatz zuweisen ByteBuffer
sofort zugewiesen, oder wird sie nur bei Bedarf während des Lesens aus dem Puffer zugewiesen?
Ich habe gerade versucht, eine 500+ MB große Datei in einem trivialen Testprogramm vollständig abzubilden, und habe mir den Speicherverbrauch des Prozesses angesehen. (Mit beiden Runtime#totalMemory
und in der OS X-Aktivitätsanzeige nach einem groovysh-Prozess zu suchen). Die Speichernutzung überstieg nie 30 MB.
Könnte eine Java-Implementierung also einen Teil ihres Speicherverbrauchs in nativen Aufrufen "verstecken"? Und wenn ja, gibt es eine Möglichkeit, herauszufinden, wie viel das unter OS X ist?