我的问题与Java-Native-Code-Background:
密切相关您无法很好地从Java控制本机内存。你可能有 听说过原生缓冲区,但他们没有告诉你的是那个 Java没有正确地垃圾原生缓冲区。问题是Java 不考虑原生缓冲区的大小,这意味着 它会在某些时候释放本机缓冲区,但如果你真的那么 其中许多,那么它可能不会在你的内存耗尽之前。 这意味着所有数据都必须存储在Java对象中。
因此,是否可以以某种方式告诉或注册所使用的本机内存量,以告诉JVM它应该运行GC? 如果我理解正确,那么Dalvik does this,但在所有JVM上有一个可靠的方法,这将是很好的。
谢谢!
答案 0 :(得分:2)
您无法告诉JVM使用了多少本机内存,JVM根本没有任何接口。但是如果你因为JVM没有注意到你使用了多少而根本不想耗尽内存,我可以想到两种方法:
java.lang.System.gc()
运行GC。 Smarter people than me are suggesting it.不要忘记GC会影响JVM的性能。