Ho notato che java.util.HashMap
produce rifiuti per il GC quando viene utilizzato sul mio sistema ad alte prestazioni, che in pratica è un selettore che legge dalla rete. Esiste un'alternativa a java.util.HashMap
(vale a dire non è nemmeno necessario implementare java.util.Map
, in altre parole, può avere una propria API) che posso usare che non lascerà spazzatura dietro?Esiste un'implementazione HashMap in Java che non produce dati inutili?
IMMONDIZIA = oggetti che vanno dalla portata e dovranno essere raccolti dal GC.
Per @ durron597:
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
while(true) {
map.put("foo1", "bah1");
map.put("foo2", "bah2");
map.remove("foo1");
Iterator<String> iter = map.keySet().iterator();
while(iter.hasNext()) {
iter.next();
}
}
}
Ora familiare che con verbose: gc e vediamo cosa succede ... :)
Cosa intendi con "spazzatura"? – durron597
Garbage come nel comportamento di GC o nell'uso della memoria? O vuoi semplicemente sfrattare vecchie voci quando la memoria si esaurisce? – hexafraction
@ durron597 garbage è oggetti non più in uso – Trilarion