所以,我工作的一个游戏在Android中,我被检查出堆和分配,看是否有什么记忆脚麻,什么不是。当我到达堆栈时,它告诉我它为我的游戏分配了33 MB,而31 MB分配给了1字节的数组类型。我试着弄清楚为什么这么大,但我没有运气,甚至不知道要寻找什么。有没有人有任何想法?提前致谢!让我知道你是否需要更多信息。的Android堆1字节数组类型非常大
请问
编辑:
我是不是发生了什么事,对不起十分清楚,已经很晚了,当我张贴了这个。
基本上我做了一个简单的多点触摸检查器,代码的下方,并且当我跑它,我决定检查堆。正如我上面说这是因为我在做什么非常大的,刚开点,并使用画
public void onDraw(Canvas c)
{
c.drawColor(Color.BLACK);
Point[] touchPlacesHolder = touchPlaces;
for(int i = 0; i < touchPlacesHolder.length; i++)
{
c.drawCircle(touchPlacesHolder[i].x, touchPlacesHolder[i].y, 100, paint);
}
}
public boolean onTouchEvent(MotionEvent event){
touchPlaces = new Point[event.getPointerCount()];
for (int i = 0; i < event.getPointerCount(); i++)
{
touchPlaces[i] = new Point((int) event.getX(i), (int) event.getY(i));
}
return true;
}
我被通过的意图将其链接到一个按钮上的另一个运行此活动坚持就可以了一圈,代码在下面。我不确定它是否与我连接2的方式有关,也许我在那里导致了内存泄漏。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Window win = getWindow();
win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
final Button newGame = (Button) findViewById(R.id.new_game_button);
newGame.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks
Intent intent = new Intent(v.getContext(), Platformer.class);
startActivity(intent);
}
});
final Button levelEditor = (Button) findViewById(R.id.level_editor);
levelEditor.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), LevelEditor.class);
startActivity(intent);
}
});
}
正如你所看到的,我必须附加到的代码,我展示了第二位的按钮另一项活动,但我想,因为他们使用相同的内存量这两个我想请教一下简单的例子,即使一个人使用位图,另一个不是。
所以,基本上我的问题是,为什么会这么简单的东西需要这么大的堆,以及它为什么要使用它那么多东西的时候要复杂得多像割绳子大约一半大小。谢谢!再次
编辑:
我只是改变了清单,开始用最简单的一个,离开了主菜单和其他活动了。多点触控测试仪使用其13 mb堆大约12 mbs。我为菜单做了同样的事情,它分配了大约25 MB,并且使用了大部分,而另一个没有显示的类使用了大约25个。
所以,我猜测额外的内存使用它拿着它在内存中的菜单,但我不知道为什么它是使用这么多的内存在首位的菜单。任何想法如何修复或修复它在内存中的方式?