如果我知道我分配了什么内存以及何时需要释放。我可以在Java中禁用垃圾收集吗?
我只想让我的应用程序的内存需求<1mb。
我认为必须有一个选项来禁用创建垃圾然后收集它。我根本不想保留垃圾。
此外,垃圾回收仍然会留下泄漏,所以在常规C程序中查找泄漏是乏味的,Java GC也是如此。
让我自己处理垃圾。。
如果我知道我分配了什么内存以及何时需要释放。我可以在Java中禁用垃圾收集吗?
垃圾只在内存耗尽时触发(并发收集器除外)。如果你没有创建太多垃圾,而且从未耗尽内存,你就不需要GC,它也不会运行。
我不知道你为什么要为一个应用程序这样做。这种技术用于高频交易,以尽量减少或避免GC,但我认为应用程序没有意义。
我只想让我的应用程序的内存需求<1mb。
这很难做到,因为环境甚至会使用这么多来运行helloworld程序。你的应用程序可以添加这么多。
我认为必须有一个选项来禁用创建垃圾然后收集它。我根本不想保留垃圾。
如果你不想保留垃圾,那么你需要一个垃圾收集器。如果你自己回收,你不需要GC。
此外,垃圾回收仍然会留下泄漏,所以在常规C程序中查找泄漏是乏味的,Java GC也是如此。
GC不会像C程序那样泄漏,内存总是可以恢复的。在Java中,"内存泄漏"只是指内存使用量的任何不希望的增加。
让我自己处理垃圾。。
没有人会阻止你。
没有垃圾收集器不在您的控制范围内。
达尔维克虚拟机的任务是释放内存。
你可以查看这个链接
http://developer.android.com/training/articles/perf-tips.html
检查"避免创建不必要的对象"下的主题。
此外,您应该以这样一种方式进行编码,以免遇到内存泄漏。
即使可以禁用gc,你为什么要这么做?(我不知道,我认为禁用GC是不可能的)。GC将释放内存,如果禁用它,垃圾回收将如何进行。
你能做的最接近析构函数的事情:
myObject = null;
System.gc();
但这是不可取的。
我会更担心一些Java类有一个GC一无所知的本地对等。例如,当您不再需要位图时,应该始终调用Bitmap.recycle()
。