Wenn Sie alle Daten im Speicher haben müssen, versuchen Caching häufig Objekte erscheinen. Wenn Sie sich beispielsweise Mitarbeiterdaten ansehen und diese alle eine Berufsbezeichnung haben, verwenden Sie eine HashMap, wenn Sie die Daten laden und die bereits gefundenen Stellentitel wiederverwenden. Dadurch kann der von Ihnen verwendete Speicher erheblich reduziert werden.
Bevor Sie irgendetwas unternehmen, sollten Sie einen Profiler verwenden, um zu sehen, wo Speicher verschwendet wird, und um zu überprüfen, ob Dinge, die Garbage Collected sein können, keine Referenzen haben. Auch hier ist String ein gängiges Beispiel. Wenn Sie zum Beispiel die ersten 10 Zeichen einer Zeichenkette mit 2000 Zeichen verwenden und eine Teilzeichenfolge verwendet haben, anstatt eine neue Zeichenfolge zuzuordnen, haben Sie tatsächlich eine Referenz auf ein Zeichen [2000] ] Array, mit zwei Indizes, die auf 0 und 10 zeigen. Wieder ein großer Speicher-Waster.
Danke für Ihre Antworten, aber ich möchte nicht meine Heap-Größe erhöhen, ich denke, ich muss einen guten Algorithmus finden. – MemoryLeak
@Hooligan: Sagen Sie uns, warum Sie die Daten in einen Vektor laden, und vielleicht können wir Ihnen einen guten Algorithmus anbieten. – Brian
Unser altes Programm begegnet einem solchen Outofmemoryerror, also muss ich es optimieren, und das Programm hat alle Daten in das Feld geladen und dann darauf basierend verarbeitet. – MemoryLeak