Gelöschter Account
- Forum-Beiträge: 18
29.05.2013, 18:51:53 via Website
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
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
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.