是否可以在Java/Android中选择性禁用垃圾创建器/收集器



如果我知道我分配了什么内存以及何时需要释放。我可以在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()

最新更新