Wie behebe ich ein großes und vermutlich bekanntes Memory Leak?

Kokujou schrieb:
Das sind meines Erachtens nach viel, viel zu viele. Hier könnte (oder eher wird) dein Problem liegen.
Mein gesamtes System hat zurzeit ~1700 Threads (sieht man auch im Task-Manager unter Leistung->CPU). Windoof, Firefox, Spotify, allerlei Windoof Services und was da nicht noch alles im Hintergrund läuft (insgesamt 160 Prozesse). Dein Spiel alleine macht bald doppelt so viel.

Kokujou schrieb:
Es ist eine Lösung.
Meiner Meinung nach noch immer ein Workaround, für wahrscheinlich das obige Problem.

Nachtrag:
Ich habe in deinem Code folgendes gefunden: Task.Run(()=>PlayNewGame(true, P1Mode, P2Mode)).Result.
Die Task Sache kannst du dir hier sparen. Was du hier sagst: Rufe PlayNewGame in einem neuen Thread auf und warte im aktuellen bis das fertig ist. Du kannst stattdessen einfach direkt PlayNewGame aufrufen, so sparst du dir den Overhead mit dem Thread (auch wenn der in diesem Fall nicht der Rede wert ist).

Was ist denn mit https://docs.unity3d.com/Manual/ProfilerCPU.html und https://docs.unity3d.com/Manual/ProfilerMemory.html?
 
Zuletzt bearbeitet:
Bagbag schrieb:
Das sind meines Erachtens nach viel, viel zu viele. Hier könnte (oder eher wird) dein Problem liegen.
Mein gesamtes System hat zurzeit ~1700 Threads (sieht man auch im Task-Manager unter Leistung->CPU). Windoof, Firefox, Spotify, allerlei Windoof Services und was da nicht noch alles im Hintergrund läuft (insgesamt 160 Prozesse). Dein Spiel alleine macht bald doppelt so viel.
was? NEin! Ich rede doch auch von meinem System XD Ich meinte den Task-Manager

Mein Spiel bzw. Ganz Unity braucht nur 120 Threads.
Den Code hab ich entfernt, aber das war eh nur ein überbleibsel und würde ja bestenfalls "nur" 1000 mal aufgerufen. "nur" im Hinblick auf einen Prozessor der mir offenbar Millionen von Zuständen pro Sekunde ausrechnen kann, danke Intel ;)
 
Ah, dann ist das was anderes :D

Mann kann sich auch nur die Threads eines Prozesses anzeigen lassen:
812241


Hast du dir das mit dem Profiling mal genauer angeschaut?
 
bis jetzt noch nicht. ich hatte zu viel damit zutun diverse andere Bugs zu fixen^^ immerhin ist es jetzt möglich 1.000 Spiele zu spielen, alle weiteren optimierungen haben Zeit.

Ich bin auf jeden Fall sehr dankbar für den Tipp mit der Beschränkung der Parallelität, der hat mir echt das Leben gerettet.
Ergänzung ()

Bagbag schrieb:
Mann kann sich auch nur die Threads eines Prozesses anzeigen lassen:
hab ich gemacht, daher die Zahl 120 für ganz Unity. Aber da mein Programm IN unity ausgeführt wird krieg ich natürlich nicht die Einzel-Daten.
 
Das ganze Thema mit dem Profiling ignorierst du echt gekonnt :D
 
  • Gefällt mir
Reaktionen: transdenzentral
sehr :p ist nämlich anstrengend.

Ja, sorry dafür aber ich bin froh dass es einmal funktioniert und hab neben der arbeit kaum zeit mich mit der masterarbeit zu befassen die eigentlich schon vor 6 monaten fertig sein sollte...

ich will nur alles aus dem weg kriegen was den grundsätzlichen ablauf irgendwie stört. das programm selbst wird ja nichtmal bewertet nur die ergebnisse. und meine Profs... nunja da hat eh keiner ahnung von meiner materie. falls sie überhaupt mal antworten.

das grundproblem ist gehoben alles andere ist optimierung und hat zeit nachdem das alles abgenommen wurde. schließlich hat es im normalen spielbetrieb absolut keine auswirkungen^^
 
Zurück
Oben