一个家伙在循环里不停地创建删除对象,一会儿就把消耗内存消耗光了。虽然JAVA有垃圾回收机制,但是回收并不是实时的,不是对象不用了就立即回收了。
他的代码大致如下
for(int ;;)
{
HisObject o = new HisObject();
//把o处理一下
o = null;
}
参考android中MotionEvent和Message的实现,可以实现对象的重复利用,一个是栈的方式,一个是队列的方式。使用方式是调里面的recycle()方法。比如Mesage,
在Looper的loop() 里是这样用的。
while(true) {
Message msg = queue.next();
......
msg.target.dispatchMessage(msg);
msg.recycle();
}
具体可以参考里面的recycle方式是如何实现对象重复利用的。
本文探讨了一个常见的内存管理问题:在循环中不断创建并删除对象导致内存迅速耗尽。通过介绍JAVA垃圾回收机制的工作原理,文章进一步讲解了如何借鉴Android中MotionEvent和Message对象的复用模式来解决该问题。采用栈或队列方式实现对象池,通过调用recycle()方法来重复利用对象,从而有效降低内存消耗。
171万+

被折叠的 条评论
为什么被折叠?



