Pamięć jest alokowana przez mechanizmy systemu właśnie po to aby operacja dyskowa była przeprowadzana sprzętowo przez kontroler DMA, a nie programowo za pomocą procedury wykonywanej przez CPU. Jest to nic innego jak bezpośredni dostęp do dysku.
Dobrze byloby gdybys poznal roznice pomiedzy malloc a mmap, bo ewidentnie mylisz pojecia.
Od JVM 7 żaden program Java napisany z użyciem nowego API nie może być mniej wydajny jeżeli chodzi o operacje dyskowe od kodu natywnego takiego jak napisany w C/C++.
A mozesz opisac w jaki sposob Java realizuje te gwarancje? Ja np. do tej pory wiele funckjonalnosci osiagam przez wywolania jni, bo Java nie oferuje wielu optymalizacji. Zabawki takie jak lock xadd albo cmov dla inkrementacji atomicow pojawily sie dopiero w Java 8.
[Aktualizacja]
Oczywiście bufory alokowane bezpośrednio nie muszą wcale być wielkościami sektorów czy jednostek alokacji plików. API systemu też tego nie wymaga. Różnica między alokowaniem bezpośrednim, a nie bezpośrednim jest tylko taka, że pomijany jest krok przepisywania przez kod systemu (czyli CPU) bufora na stercie JVM do prywatnego obszaru systemowego na który jest zaprogramowany kontroler DMA w taki sposób, że po przeprogramowaniu kontroler ten operuje bezpośrednio na pamięci RAM dostępnej dla kodu Javy/JVM (bez znaczenia czy w danym momencie skompilowanego w locie do kodu maszynowego czy kodu maszynowego JVM interpretującego bytecode). Oczywiście przeprogramowanie jest standardową procedurą dostępną dla natywnego kodu maszynowego, natomiast Java we wcześniejszych wersjach pracowała podobnie jak procedury DOS/BIOS zawierające krok przepisywania danych przez CPU. Jest to niewydajne. Szczególnie dla dużych ilości danych na jakich operuje się obecnie.
- Bufory na stercie sa niemapowalne na pliki. Nie wiem skad pozyskales wiedze ze sa.
- Do skorzystania z DMA nie jest potrzebne zadne "przeprogramowanie". To juz jakas kompletna bzdura.
- Zero-copy data transfer jest w Javie dostepny od 1.5 poprzez NIO (zwlaszcza bufory i channele).
Twoje posty brzmia jakbys wiedzial o czym mowisz, ale ewidentnie miesza ci sie kilka tematow jednoczesnie. Pomysl o tym w ten sposob: ktos poczatkujacy przeczyta sobie takiego posta i bedzie mial bledne przekonanie o tym jak rzeczy w Javie dzialaja.
Z checia podesle liste dobrych lektur na poczatek, ktore pomoglyby ci uporzadkowac wiedze, ktora juz masz.