我如何在垃圾收集器起作用之前回收不再需要的对象?
我如何在垃圾收集器起作用之前回收不再需要的对象?
我的老师让我下载一个2D游戏并提高应用程序的性能。现在我有点卡住了,决定下载Jprofiler来检查游戏使用的内存等。我发现该应用程序正在使用大量的矩形,并且只有当垃圾收集器出现并完成工作后才会被删除。我的问题是:是否有办法在垃圾收集器出现之前摆脱这些矩形?这里是Jprofiler扫描的图片。
Sprite对象具有Rectangle范围的ArrayList。
tileX = (int)xMap/tileXSize; tileY = (int)yMap/tileYSize; accurateX = -(int)xMap%tileXSize; accurateY = -(int)yMap%tileYSize; for (int i=tileX; i<tileX+displayX+1 && i<sizeX; i++) { for (int j=tileY; j<tileY+displayY+1 && j<sizeY; j++) { Sprite s = spriteMap[j][i]; if (s != null) { s.act(); // Colisones con los objetos de al lado if (inMap(i+1,j) && spriteMap[j][i+1] != null) { if (s.collidesWith(spriteMap[j][i+1], false)) { s.collision(spriteMap[j][i+1]); spriteMap[j][i+1].collision(s); } } if (inMap(i,j+1) && spriteMap[j+1][i] != null) { if (s.collidesWith(spriteMap[j+1][i], false)) { s.collision(spriteMap[j+1][i]); spriteMap[j+1][i].collision(s); } } if (inMap(i+1,j+1) && spriteMap[j+1][i+1] != null) { if (s.collidesWith(spriteMap[j+1][i+1], false)) { s.collision(spriteMap[j+1][i+1]); spriteMap[j+1][i+1].collision(s); } } if (s.isToDelete()) { spriteMap[j][i] = null; } } }
admin 更改状态以发布 2023年5月21日