2016-07-01 5 views
0

Es scheint vernünftig, Java-Referenz als shared_ptr zu implementieren und keine Garbage Collection überhaupt zu verwenden.Ist es möglich, Garbage Collector in Java loszuwerden, indem Java-Referenz als shared_ptr implementiert?

+0

das haben sie in Python gemacht, aber Python ist effektiv single-threaded und das macht einen großen Unterschied für die Garbage Collection. – Slava

+1

Nein, Sie würden 'weak_ptr' benötigen, um zyklische Verweise zu vermeiden, und sogar _tooo_ viel' shared_ptr' ist nicht effizient und würde die Leistung beeinträchtigen, wenn Sie nicht über einen faulen Entallokationsmechanismus verfügen. – Arunmu

+0

Technisch gesehen haben Sie dann einen Garbage Collector. Die haben keine so gute Leistung. –

Antwort

0

Es ist möglich, es ist überhaupt nicht effizient.

Die Oracle JVM verwendet in der Vergangenheit Referenzzählung GC, es war langsam und nicht effektiv. Sie wechselten zu moderneren GC-Algorithmen wie Generations-GC-Algorithmen.

Nicht shared_ptr ist akzeptabel in C++ aus der bloßen Tatsache, dass die überwiegende Mehrheit der Objekte in C++ im Stapel zugeordnet sind, so dass die Referenz zählen Natur von shared_ptr kaum wahrnehmbar ist. Auf Java wird die große Mehrheit der Objekte im Heapspeicher zugewiesen. Sie sollten also zweimal überlegen, bevor Sie mit dem Zählen beginnen.

+0

In der Vergangenheit wann? – EJP

Verwandte Themen