Skończyło się brakować pamięci w Javie z powodu bardzo dużych list i zestawów utworzonych podczas transakcji i powtórzono je tylko raz na samym końcu transakcji. Czy są jakieś biblioteki udostępniające kolekcje Java, które mogą buforować ich przekształcalną zawartość na dysk, gdy rozmiar kolekcji przekroczy określony próg?Kolekcje Java, które przechodzą na dysk
Odpowiedz
Można spróbować czegoś podobnego ehcache i jego opcji overflowToDisk
Wiem, że Ehcache nie ma logiki, która odpytuje (pobierz i usuń) elementy z pamięci podręcznej, zgodnie z dokumentacją widzę tylko metody #get(). Może wiesz, jak mogę wdrożyć taką funkcjonalność za pomocą ehcache? – MeetJoeBlack
nie będę pisać ci przykładowy kod, ponieważ stałoby się zbyt długo, ale to jest jak ja to robiłem:
- Extend
LinkedBlockingQueue
. - Zastąpić metody , , ,i
remove
. Przykład: jeśli nadklasa 'offer
zwraca wartość false (osiągnięta pojemność), następnie Zacznę od serializacji na dysk. - Podobnie w implementacji sprawdzasz, czy w ogóle masz jakiekolwiek elementy obecne w pamięci, a jeśli nie, , a następnie rozpoczynasz odczytywanie z dysku (i usuwanie pierwszego przeczytanego rekordu, ponieważ będzie on teraz znajdował się w pamięci; lub oczywiście możesz czytać zapisy w partiach).
- Przypisanie każdej instancji takiej kolejki identyfikatora bezpiecznego systemu plików, aby można go było użyć do utworzenia bezpiecznej dla niego nazwy pliku. Ponadto, aby to zrobić dalej, prawdopodobnie użyłbym katalogu domowego bieżącego użytkownika jako miejsca, w którym te kolejki mają zostać przekształcone do postaci szeregowej na dysku.
W ten sposób 99% kolejki serializowanej dyskiem jest już gotowe, a dodatkowe funkcje można umieścić tylko w odpowiednich miejscach. Musisz dokładnie przeczytać dokumentację interfejsu Javy BlockingQueue
, ale hej, warto poświęcić swój czas, ponieważ dodasz tylko trochę dodatkowej funkcjonalności, jakiej potrzebujesz, zamiast pisać całą rzecz od zera.
Mam nadzieję, że to pomoże.
- 1. Java Kolekcja, które strony na dysk, gdy jest pełny?
- 2. Kolekcje Java (struktura LIFO)
- 3. Java - typy ogólne i kolekcje
- 4. Kolekcje Java utrzymujące zamówienie reklamowe
- 5. Biblioteka Java do zapytania Kolekcje/Obiekty
- 6. Kolekcje Java. Dlaczego nie ma typów pierwotnych?
- 7. Kolekcje Java za pomocą symbolu wieloznacznego
- 8. Kolekcje w stylu Java w Delphi
- 9. Konwertowanie niezmiennych na zmienne kolekcje
- 10. Leniwe ładowanie dzieci, które mają chętne kolekcje wewnątrz
- 11. Uruchom robocopy bat, aby skopiować cały dysk na inny dysk
- 12. Skopiuj katalog na inny dysk
- 13. Jak określić, które opcje wiersza poleceń gcc domyślnie przechodzą na ld?
- 14. Wydajność Java kolekcje a baza danych w pamięci
- 15. Java String.split przechodzą w skompilowany regex wykonania powodów
- 16. coffeescript nie przechodzą argumentu
- 17. kolekcje do filtrowania lambdaj
- 18. Micro-benchmark porównujący zmienne, niezmienne kolekcje Scala z java.util.concurrent. * Kolekcje
- 19. Debugger Eclipse i kolekcje
- 20. Napisz pobrany plik binarny na dysk w Javie
- 21. Kolekcje Kotlin rzucają wyjątek ClassNotFoundException na Androida
- 22. Prześlij zdjęcie na dysk bez kompresji
- 23. Klon GIT na dysk zewnętrzny do backupu
- 24. Dlaczego kolekcje Java nie mogą bezpośrednio zapisywać typów pierwotnych?
- 25. Jak wysyłać wiele obrazów, które są obecne w folderze na dysk Google w programie Android programowo?
- 26. Paged kolekcje w Backbone.js
- 27. kolekcje scala bufor okrągły
- 28. wartości przechodzą w menedżerze alarmowego
- 29. Kolekcje Scala niekonsekwencje
- 30. Scal kolekcje w wyroczni?
Niezupełnie tego, czego szukasz, zajrzyj na Hadoop http://hadoop.apache.org/ – saugata
Czy jest jakiś powód, dla którego nie używasz standardowego RDBMS? W pewnym sensie jest to definicja tego, o co pytasz. Nawet te lekkie, takie jak h2db, sqlite sprostałyby większości zadań. – dpb