Pracuję nad programem Java, który generuje fraktalne orbity od dłuższego czasu. Podobnie jak zdjęcia, im większy obraz, tym lepszy będzie on po zmniejszeniu. Program wykorzystuje tablicę obiektów 2D (punkt), do której zapisywane jest obliczenie wartości punktu. Oznacza to, że punkt jest zapisywany w to odpowiednia wartość, tj .:Java Heap Hard Drive
Point p = new Point(25,30);
histogram[25][30] = p;
Oczywiście, jest to edycja dla prostoty. Mógłbym po prostu zapisać wartości punktowe w pliku CSV i później zastosować je do rastra, ale użycie podobnych metod przyniosło niepożądane rezultaty. Próbowałem przez jakiś czas, ponieważ cieszyłem się z możliwości tworzenia większych obrazów z przestrzenią uwolnioną przez brak tej tablicy. To po prostu nie zadziała. Dla jasności chciałbym dodać, że obiekt Point przechowuje również dane kolorów.
Kolejnym problemem jest WriteableRaster, który będzie miał te same wymiary co tablica. W połączeniu te dwie zajmują dużo pamięci. Przyjąłem to, próbując zmienić sposób, w jaki zostało to zrobione kilka razy, z których każda miała niższą jakość.
Po próbie optymalizacji pamięci i czasu, doszedłem do wniosku, że jestem naprawdę ograniczony przez pamięć RAM. To jest to, co chciałbym zmienić. Jestem świadomy przełącznika -Xmx (ustawiony na 10 GB). Czy istnieje sposób użycia pamięci wirtualnej systemu Windows do przechowywania rastra i/lub tablicy? Doskonale zdaję sobie sprawę ze znaczącego wyniku, jaki spowoduje ten efekt, ale zamiast obniżać jakość, tak naprawdę nie wydaje się, by był duży wybór.
Myślę, że chcesz spojrzeć na [Berkeley DB] (http://www.oracle.com/technetwork/products/berkeleydb/overview/persistence-160890.html), w szczególności trwałość adnotacji dla POJO. –