Aktywne Wpisy

l3gend +252
Dawajcie samochody, które jeszcze parę lat temu można było zobaczyć na ulicy i w momencie wyginęły, ja zaczynam, klasyczna Asterka 1, teraz to ze świecą szukać na drodze
#motoryzacja #samochody
#motoryzacja #samochody
źródło: temp_file443915098270584529
Pobierz
PSY_DELIC +15





A więc chcę wykorzystać w moim projekcie memory mapped files, i mam tu kilka pytań odnośnie używania ich w javie jak i ogólnie:
1. Czy można ręcznie określić gdzie plik zostanie załadowany, na jakim adresie w pamięci? Czy system na to pozwala? Czy da się to zrobić w javie? (Alokować pamięć itd umiem, tylko nie wiem jak zmapować do mojej pamięci wybrany plik)
2. I w związku z tym, czy można tak samo kontrolować wszystko mapując tylko część pliku?
3. Jakie są dobre biblioteczki od tego, które dadzą mi takie możliwości? Lub inne dobre, bez tych możliwości :<
4. Czy zadziała to tak jak powinno i jak mi aplikacja padnie, to dane i tak się zapiszą na dysk, czy muszą zapis wykonywać ręcznie? I czy mogę go wymusić?
5. Czy mogę jakoś kontrolować ilość pamięci którą poświeciłem na mapowanie plików? Chce określić limit pamięci w MiB której aplikacja nigdy nie przekroczy - bo może to się słabo skończyć. Wliczając w to pamięć która się marnuje, np leży między mapowanymi fragmentami bo wcześniej tam był inny mały fragment. (Problem znika jeśli mogę ręcznie wybrać obszar pamięci i nim ręcznie zarządzać)
I szukam albo artykułów o tym, albo może ktoś coś potrafi wyjaśnić.
I opis tego co robię, może ktoś bardziej zaawansowany coś doradzi:
sprawdź ByteBuffer i allocateDirect(), możesz powiedzieć mu ile bajtów ma alokować i po prostu czytać/czyścić aż wczytasz.
A mapowanie != wczytanie ot-tak do pamięci.
EDIT: pod windowsem też sie da: https://msdn.microsoft.com/en-us/library/windows/desktop/aa366763(v=vs.85).aspx
wiec albo JNI albo szukaj gotowych biblitek w javie, ktore pozwola tego uzyc.
Znalazłem też już sporo innych danych, i tak właściwe to cały mój koncept tutaj jest zły :D Ale już zaczynam rozumieć jak to działa.
Zalokuj se jakis duzy obszar pamieci RAZ i tam kopiuj/mapuj brakujace 4k bloki z dysku, nadpisujac je, jesli trzeba.
Tyle się dowiedziałem z zaufanego źródła.
@GotoFinal: to źle się dowiedziałeś... z manuala mmap: