Garbage Collector bei Spieleentwicklung

  • Antworten:0
Gelöschter Account
  • Forum-Beiträge: 18

29.05.2013, 18:51:53 via Website

Hallo zusammen,

derzeit entwickle ich noch ein kleines Game. Seitdem der erste Gegner auf dem Platz ist merke ich, nach 30-40 Sekunden spielen, dass mein GC anspringt und dem Spiel einen saftigen Lag verteilt. Im Internet habe ich ein paar Informationen gefunden: keine Variablen instanziieren und möglichst viel static nutzen. Da ich hier keine 5 Klassen posten möchte und wahrscheinlich auch niemand Lust hat, alles durchzuarbeiten, erkläre ich kurz mein Schema.

Ich habe eine SurfaceView, in der ich onDraw überschreibe. Das zeichnen übernimmt ein Thread. Nun habe ich eine (Spieler)Klasse, die die Spieler und Gegnerposition verwaltet, bewegt, etc.(wird von separatem Thread geloopt). Die View zeichnet z.B. einen Ball mit und holt sich den Wert aus den statischen Variablen der (Spieler)Klasse (c.draw(klasse.x, klasse.y);). Ich arbeite also mit public und übergebe keine Werte an Methoden(keine getter und setter).

Mit dem DDMS-Tool habe ich herausgefunden, dass der GC 520 Object[] und 520 String-Arrays raus schmeißt, nachdem der Mainloop ca. 1500Mal durchgelaufen ist. Daraus kann ich jedoch leider nichts schlussfolgern. Ist das "Konzept" Müll? Oder verstehe ich Grundlegendes nicht? Nur zum Verständnis.. onDraw bekommt ein Canvas übergeben. Dieses müsste, wenn ich das richtig verstanden habe, auch jedes Mal ein Canvas-Object instanziieren?

Gruß Mo

Antworten