如果我知道我分配了什么内存以及什么时候需要释放它。我可以在Java中禁用垃圾收集吗?
我只是想让我的应用程序的内存要求<1mb。
我认为必须有一个选项来禁用创建垃圾然后收集垃圾。我根本不想留垃圾。
此外,垃圾收集仍会留下泄漏,因此在常规C程序中发现泄漏与Java GC的情况相同是乏味的。
让我自己处理垃圾......
答案 0 :(得分:1)
您无法控制垃圾收集器。
它是dalvik VM释放内存的工作。
您可以查看此链接
http://developer.android.com/training/articles/perf-tips.html
检查避免创建不必要的对象下的主题。
此外,您应该以不会遇到内存泄漏的方式编写代码。
即使它可以禁用gc,你为什么要这样做?(我不知道它,我认为不可能禁用GC)。 GC将释放内存,如果禁用它,将如何进行垃圾收集。
答案 1 :(得分:1)
如果我知道我分配了什么内存以及什么时候需要释放它。我可以在Java中禁用垃圾收集吗?
垃圾只会在内存不足时触发(并发收集器除外)如果你没有创建太多垃圾而且永远不会耗尽内存,那么就不需要GC而且它不会运行。
为什么你不想为应用做这个,我不知道。这种技术用于高频交易,以最小化或避免GC,但我没有看到应用程序的重点。
我只想制作应用程序的内存要求&lt; 1mb。
这很难做到,因为环境将使用这么多来运行一个hello world程序。您的应用程序可以添加这么多。
我认为必须有一个选项来禁用创建垃圾然后收集垃圾。我根本不想留垃圾。
如果您不想保留垃圾,那么您需要一个垃圾收集器。如果您自己进行回收,则不需要GC。
此外,垃圾收集仍会留下泄漏,因此在常规C程序中发现泄漏与Java GC的情况相同是乏味的。
GC不会像C程序那样泄漏,内存总是可以恢复。在Java中,“内存泄漏”只意味着内存使用量的任何不希望的增加。
让我自己处理垃圾......
没有人阻止你。
答案 2 :(得分:0)
你可以做的最接近析构函数的事情:
myObject = null;
System.gc();
但这不可取。
我会更担心一些具有GC本身并不知道的本地对等体的Java类。例如,当您不再需要位图时,应始终致电Bitmap.recycle()