3 Stimmen

Ressourcen von den Threads freigeben

In meiner Anwendung (bei meiner Arbeit) pflegen wir einen Socket-Verbindungspool zur Kommunikationssteuerung. Es gibt eine große Anzahl von Threads, die eine aktive Verbindung aus dem Pool nehmen, sie verwenden und schließen. Aber der Haken ist, dass irgendwo dazwischen der Garbage Collector aufgerufen wird, um die nicht verwendeten Referenzen zu sammeln.

Jetzt, nachdem der Garbage Collector aufgerufen wurde, möchte ich:

  1. alle Threads anhalten, die an der Kommunikation teilnehmen (bitte beachten Sie, dass meine Threads zusammen mit dem GC laufen -> ich meine, die Planung macht es möglich)
  2. die Socket-Verbindungen vom Thread freigeben (d.h. Referenzen zur Socket-Verbindung), deren Status irgendwo dazwischen liegen könnte oder falls das praktisch nicht möglich ist, dann:
  3. Wie kann man die Aufruf des GC verzögern, nachdem alle Threads, die die Ressourcen nutzen, fertig sind. In diesem Fall könnte es erforderlich sein festzustellen, ob die relevanten Threads ihre Aufgabe beendet haben.

2voto

Bohemian Punkte 386825

Wenn es Ihnen wichtig ist, wann der GC ausgeführt wird, dann ist Ihr Anwendungsdesign fehlerhaft.

Korrigieren Sie Ihr Design.

Hinweis: Obwohl es Spezifikationen dafür gibt, wie der Garbage Collector funktionieren sollte, ist es kein Erfordernis, dass JVM-Implementierungen überhaupt einen Garbage Collector haben!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X