我的應用程序出現了一些問題。有時它滯後,並給我「GC_CONCURRENT釋放」。我使用MAT來查看消耗這麼多內存的東西,並且我發現對象列表吃掉了很多內存。問題在於我的遊戲中有塊,我需要看看我的玩家是否踩在他們身上,這就是爲什麼我使用這個列表。我目前有200塊,但我會有更多,我不認爲他們應該使用這麼多的內存,我能做些什麼來解決這個問題?這是塊類的樣子:Android Studio Libgdx內存問題
package com.NeverMind.DontFall.android;
import android.util.Log;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
/**
* Created by user on 20-Aug-15.
*/
public class blockClass {
private SpriteBatch spriteBatch;
public float x, y, sizeX = 100, sizeY = 100, startTime;
private boolean isTouched = false;
private Texture texture;
Sprite blockSprite;
public blockClass(float sentX, float sentY, Texture sentTexture, float scaleX, float scaleY){
x = sentX;
y = sentY;
sizeY *= scaleY;
sizeX *= scaleX;
spriteBatch = new SpriteBatch();
texture = sentTexture;
blockSprite = new Sprite(texture);
startTime = System.currentTimeMillis();
}
public void draw(float cameraX, float cameraY) {
spriteBatch.begin();
spriteBatch.draw(blockSprite, x + cameraX, y + cameraY, sizeX, sizeY);
spriteBatch.end();
}
public void update(float posX, float posY, boolean immune){
if (isTouched == false && immune == false)
if (touched(posX, posY))
isTouched = true;
if (isTouched == true) {
y -= 10;
}
}
public boolean touched (float posX, float posY)
{
if (posX >= x && posX < x + sizeX && posY == y + sizeY)
return true;
return false;
}
public boolean toKill (float posY){
if (isTouched && y < posY - 1000)
return true;
return false;
}
}
在開始遊戲或運行時,您何時創建200塊? –
它是一個全局變量,因此列表在遊戲開始時創建,但只有一次。在列表創建後,我將其中的對象放在create()方法中,該方法只運行一次。 –
遊戲渲染時,你是否會殺死對象? –