Mi chiedo quali sono le differenze o se è uguale per entrambe.Come viene eseguita la raccolta dei dati inutili in Java e come si confronta con .net?
risposta
Ho trovato questo link dal mio altro question on SO che risponde un po 'alle differenze di garbage collection in Java e .NET/C# . Per gli altri che stanno cercando questo tipo di informazioni, ecco:
In oggetti Java vengono creati nell'heap utilizzando la nuova parola chiave. La maggior parte delle classi in C# vengono create nell'heap utilizzando la nuova parola chiave. Anche solo come JVM gestisce la distruzione di oggetti lo fa anche il CLR tramite un Marco e la raccolta dei rifiuti Compact algoritmo
NOTA: C# supporta anche stack-based classi, chiamate i tipi di valore, che sono discusso più sotto.
http://www.brpreiss.com//books/opus5/html/page428.html ha buone informazioni e algoritmo Marc e compatto. –
Suppongo che non ci sia alcuna differenza concettuale. Poiché i modelli di memoria sono leggermente diversi (for example volative difference), la realizzazione può variare.
Forse nessuna differenza concettuale su un livello elevato (ad esempio, la garbage collection su entrambe le piattaforme ha la stessa funzione - ripulire gli oggetti che non sono più referenziati), ma ci sono diversi algoritmi per fare questo, quindi ci sono grandi differenze in implementazione, anche tra le diverse versioni di JVM di Sun, ad esempio. – Jesper
IMHO se hai bisogno di preoccuparti di come funziona il GC nel 99% significa che non hai affatto bisogno di GC. –
Questa domanda non è responsabile.
In primo luogo, nessuna delle specifiche pertinenti dirà nulla su in cui Java o .net dovrebbe implementare la garbage collection. Quindi non c'è letteralmente "il modo in cui GC è fatto" in Java o in .net.
In secondo luogo, i dettagli di come GC viene implementato differiscono rispettivamente tra i vari fornitori per Java e .net, e per qualsiasi fornitore il GC può cambiare con ciascuna piattaforma, ogni versione principale, versione secondaria e anche ogni versione di patch. Inoltre, alcune implementazioni di Java consentono di scegliere tra diversi garbage collector utilizzando le opzioni della riga di comando.
Infine, non importa in che modo il GC è implementato in un'implementazione Java o .net fornito che può essere eseguito per funzionare come richiesto dall'applicazione. E per Java, la risposta è che può funzionare per la maggior parte dei tipi di applicazioni. (Le eccezioni sono tipicamente sistemi/applicazioni con rigidi requisiti in tempo reale o vincoli di memoria molto stretti.)
Ma per alcune nozioni di base e nozioni di base: http://stackoverflow.com/questions/2910224/java-garbage-collection/2922042#2922042 –
@Andreas_D - ci sono descrizioni più dettagliate del GC Java rispetto a quella a cui si fa riferimento. E entrambe le pagine di riferimento sono vecchie. I GC Java sono decisamente cambiati in modo significativo dal 1.4.1. –
- 1. La raccolta dei dati inutili è automatica in C++ standard?
- 2. Tempo di raccolta dati inutili Java?
- 3. La raccolta dei dati inutili si verifica immediatamente dopo la chiamata a Hashmap.remove()?
- 4. Come viene eseguita l'offuscamento in Java?
- 5. Come viene eseguita l'importazione in Java?
- 6. C# Raccolta di dati inutili Root attivi
- 7. Quando l'oggetto è idoneo per la raccolta dati inutili?
- 8. node.js v8 la raccolta di dati inutili non sembra attivare
- 9. È possibile ottenere OutOfMemoryError perché la raccolta dei dati inutili è troppo lenta?
- 10. Come si confronta ironpython con altri linguaggi .net?
- 11. Ogni classe definita dall'utente deve implementare l'interfaccia IDisposable per ottenere la raccolta dei dati inutili
- 12. Posso rilevare il momento in cui la garbage collection viene eseguita in .NET?
- 13. Comportamento della raccolta di dati inutili per String.intern()
- 14. Oggetto non raccolta dati inutili, ma senza gcroots
- 15. viene eseguita come debug, ma si blocca come versione
- 16. Come filtrare la raccolta dati in ReactJS
- 17. Come viene eseguita la firma del codice in Xcode 4.5
- 18. Che cosa significa "GC--" in un log di raccolta dati inutili java?
- 19. Come viene eseguita l'istanza della classe wrapper Java Boolean?
- 20. Come si confronta FlockDB con neo4j?
- 21. Debug Node.JS con JetBrains variabili mostrano 'La raccolta dei dati ...'
- 22. In Java, come viene raccolta una matrice di oggetti?
- 23. Come nascondere la vista quando l'animazione viene eseguita in Android?
- 24. Come ottenere la directory dei file attualmente eseguita in CasperJS
- 25. Esiste un'implementazione HashMap in Java che non produce dati inutili?
- 26. Come si confronta Elm con ClojureScript?
- 27. Come si confronta la finestra mobile con openshift?
- 28. Come si confronta EF4 con NHibernate?
- 29. Come si confronta C - con LLVM?
- 30. come funziona netezza? come si confronta con Hadoop?
Le persone che voteranno per chiudere questa domanda come "non una vera domanda" si preoccuperanno di spiegare le loro motivazioni? Non è come se il ragazzo avesse 100 rappresentanti. – Josh
La parte 1 ("come funziona gc in Java") è stata coperta da dozzine di domande su SO. –
@Andreas per citare Dylan "Se c'è un pensiero originale là fuori, potrei usarne uno proprio adesso." Ormai ogni domanda è stata posta su SO. Ma se la gente vuole chiuderla come duplicato, almeno scegli quella opzione dal menu perché fornisce i riferimenti OP agli altri post. – Josh