如何在内存管理环境中进行内存管理?
它只是垃圾收集还是其他什么?
在 Java 中,GC 由 VM 定期完成,无需显式调用垃圾收集。我知道我们可以使用 System.gc() 来请求垃圾收集,但不能保证垃圾收集会发生。
那么,在内存管理环境中还有其他的内存管理方式吗?
如何在内存管理环境中进行内存管理?
它只是垃圾收集还是其他什么?
在 Java 中,GC 由 VM 定期完成,无需显式调用垃圾收集。我知道我们可以使用 System.gc() 来请求垃圾收集,但不能保证垃圾收集会发生。
那么,在内存管理环境中还有其他的内存管理方式吗?
没有很多选择。您还可以检查不同类型的 GC 如何工作http://sanjaal.com/java/574/java-general/all-about-java-garbage-collection-types-algorithms-advantages-and-disadvantages/或尝试调整 GC 参数
您的问题的简短回答是否定的。在 Java 环境中,您实际上无法直接控制如何释放或管理堆空间。话虽如此,现代 JVM 具有极其高效的 GC 算法,并且通常可以完美地管理除最极端情况外的所有内存使用情况。
即使您无法直接控制收集哪些对象以及该过程何时发生,您也可以使用java.lang.ref中的引用类来影响哪些对象是合格的并且更有可能在给定时间被垃圾收集.
垃圾收集是在托管环境中管理内存的方式(事实上,这就是它被称为托管环境的原因——因为内存是为程序员管理的)。
通常,您不需要在此类环境中管理内存。
简短的回答:您不必担心垃圾收集;您唯一需要担心的是不要在 java 中导致内存泄漏。看到这个:用Java创建内存泄漏
即使你不能真正在技术层面管理你的内存,开发人员仍然能够在一定程度上管理内存。我的意思是,与其试图对抗或改进 JVM,不如让它为您完成工作。但是话虽如此,一个写得不好的程序(即糟糕的内存管理,也就是内存使用)会导致糟糕的程序体验。
但是,如果您从设计角度管理您的内存(即不浪费内存,使用适当的算法和数据结构,取消引用/释放您认为合适的内存),这些东西可以让您在一定程度上对开发人员进行控制。