Aktywne Wpisy

JankoBzykant89 +276
Treść przeznaczona dla osób powyżej 18 roku życia...

solejukowski +145
Do sprzedaży trafiła książka Michała Gulczyńskiego "Mężczyźni. O nierówności płci". 528 stron, ok. 35 zł.
---
Wcześniej zaczynają pracę, ale później przechodzą na emeryturę. Wcześniej kończą edukację. Wcześniej umierają. Częściej ulegają wypadkom i wykonują najcięższe, najmniej bezpieczne zawody. Pięciokrotnie częściej odbierają sobie życie. Częściej są bezdomni. Nie mówią o swoich problemach, bo boją się oskarżeń: o mizoginię, słabość albo „brak męskości”.
Żyjemy
---
Wcześniej zaczynają pracę, ale później przechodzą na emeryturę. Wcześniej kończą edukację. Wcześniej umierają. Częściej ulegają wypadkom i wykonują najcięższe, najmniej bezpieczne zawody. Pięciokrotnie częściej odbierają sobie życie. Częściej są bezdomni. Nie mówią o swoich problemach, bo boją się oskarżeń: o mizoginię, słabość albo „brak męskości”.
Żyjemy
źródło: 1000081140
Pobierz




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: