Ho lavorato a un programma Java che genera orbite frattali da parecchio tempo. Proprio come le fotografie, maggiore è l'immagine, migliore sarà quando ridimensionato. Il programma utilizza una matrice di oggetti 2D (Point), che viene scritta quando viene calcolato il valore di un punto. Vale a dire che il Punto è memorizzato nel suo valore corrispondente, I.e .:Disco rigido Heap Java
Point p = new Point(25,30);
histogram[25][30] = p;
Naturalmente, questo è modificato per semplicità. Potrei semplicemente scrivere i valori dei punti in un CSV e applicarli successivamente al raster, ma l'uso di metodi simili ha prodotto risultati indesiderati. Ho provato per un po 'di tempo perché mi è piaciuto essere in grado di realizzare immagini più grandi con lo spazio liberato dal non avere questo array. Semplicemente non funzionerà. Per chiarezza vorrei aggiungere che l'oggetto Punto memorizza anche i dati dei colori.
Il prossimo problema è WriteableRaster, che avrà le stesse dimensioni dell'array. Combinati i due occupano una grande quantità di memoria. Sono arrivato ad accettarlo, dopo aver provato a cambiare il modo in cui è stato eseguito più volte, ciascuno con risultati di qualità inferiore.
Dopo aver tentato di ottimizzare per memoria e tempo, sono giunto alla conclusione che sono davvero limitato dalla RAM. Questo è quello che vorrei cambiare. Sono a conoscenza dello switch -Xmx (impostato su 10 GB). C'è un modo per utilizzare la memoria virtuale di Windows per archiviare il raster e/o l'array? Sono ben consapevole del significativo impatto delle prestazioni che questo provocherà, ma al posto di abbassare la qualità, non sembra esserci molta scelta.
Penso che tu voglia guardare [Berkeley DB] (http://www.oracle.com/technetwork/products/berkeleydb/overview/persistence-160890.html), in particolare la persistenza basata su annotazioni per POJO. –