2016-05-03 20 views
0

Wie ich weiß, hat Java keine Methode zum Verwalten von Speicher, weil die gesamte Speicherverwaltung durch den eingebauten automatisch laufenden Garbage Collector erfolgt, was in einigen Fällen ein wenig ineffizient sein kann.Wie ist es möglich, Müll in Java zu vermeiden?

http://www.coralblocks.com/

Ich habe diese Website, die sagt, dass sie ein Java-Tools und Bibliotheken machen, die überhaupt ohne irgendeine Müll funktionieren. Ich würde gerne eine logische Erklärung darüber erhalten, wie es möglich sein könnte.

+0

Bitte teilen Sie ein bestimmtes Problem, wenn Sie haben .. –

+3

Ja. Das nennt man Marketing. Zählen Sie die Anzahl der Buzzwörter. – Tunaki

+2

Deine Frage ist nicht schlecht (sie machen doch einen ziemlich unverschämten Anspruch), aber das gehört nicht hierher. Vielleicht ist programmers.se besser geeignet. –

Antwort

4

In der Tat, der Artikel über CoralFIX sagt:

Null Müll: Alle Korallenblöcke Komponenten produzieren Null Müll für die GC in dem kritischen Pfad.

Das ist nicht das Gleiche wie Null Müll überhaupt zu sagen. Und es ist (für Coral) nur in einer relativ kleinen Klasse von Anwendungen erreichbar; d. h. nachrichtenbasierte Systeme, wo Sie die gesamte Arbeit durch In-Place-Matching für die Bytes in einem Nachrichtenpuffer erledigen können. Sobald Sie normale Datenstrukturen oder (die meisten) Standardbibliotheksklassen benötigen, erzeugen Sie Objekte.

Und ...

Bei Korallenblöcke verwenden wir Java als Syntaxsprache.

Mit anderen Worten, Coral Blocks Anwendungsprogrammierer schreiben keinen Java-Code!


Ist es möglich, Ihren Code zu schreiben, um dasselbe zu tun? Ja

In der Theorie, aber in der Praxis wahrscheinlich Nein, Sie müßten so viel von der Funktionalität der Java SE-Bibliotheken (und 3rd-Party-Bibliotheken) ersetzen, die Sie wäre besser dran, Ihre Anwendung zu schreiben in einem anderen Programmiersprache.

1 - Ich denke, wenn Ihre Anwendung einfach war und minimale Java SE und externe Bibliothek Abhängigkeiten hatte, dann wäre es machbar, es zu tun. Aber einige nicht-triviale Anwendungen sind so.

+0

Sie behaupten auf ihrer Website haben sie komplexe Trading-Algos, eine FIX-Engine und High-Performance-http-Server, die müllfrei sind entwickelt. Es sieht so aus, als ob sie [CoralBits] (http://www.coralblocks.com/index.php/category/coralbits/) anstelle der JDK-Standardbibliotheken oder irgendeiner anderen 3rd-Party-Bibliothek verwenden, die Unrat erzeugt. – TakeSoUp

4

Es ist nicht möglich, die Erstellung von Garbage komplett zu beenden, und es ist zu früh, zu versuchen, die Garbage-Erstellung mit Ausnahme bestimmter bestimmter Tasks und extrem speicherbeschränkter Systeme zu optimieren. Eine große Anzahl von Aufgaben wird Zuweisungen irgendeiner Art verursachen.

Allerdings kann Müll verringert werden, aber nicht beseitigt durch:

  • Pooling und wieder mit einigen Objektreferenzen.
  • Verteilen großer Datenblöcke außerhalb des Heapspeichers und manuelle Verwaltung.
5

http://www.coralblocks.com/index.php/2015/10/is-coralfix-the-fastest-and-easiest-to-use-fix-engine/

Alle Korallenblöcke Komponenten produzieren Null Müll für die GC in dem kritischen Pfad.

Meine Vermutung. Vorbelegte Puffer, keine String Objekte. Wie sie sagen:

Bei Coral Blocks verwenden wir Java als Syntaxsprache. Unsere Bibliotheken haben keine externen Abhängigkeiten und wir verlassen uns nicht einmal auf die JDK-Standardbibliotheken. Mit CoralFIX haben Sie die totale Kontrolle über den kritischen Pfad.

2

Sie können nicht vermeiden, Müll in Java zu machen, Sie können es jedoch reduzieren. Guter und effizienter Code hinterlässt normalerweise keine Variablen ohne Verwendung. Die einzige Möglichkeit, Müll zu vermeiden, besteht darin, darauf zu achten, was Sie ungenutzt lassen.