我接受了采访,并询问如何防止Java中的内存碎片。任何人都可以总结一下Java如何处理它吗?我读了一些文件但很复杂。
答案 0 :(得分:2)
简短的回答是:你使用世代垃圾收集器。
除了大多数现代Java实现 1 默认使用分代收集器 。换句话说,你(程序员)不需要处理问题,因为它已经处理过了。
唯一可能遇到碎片问题的情况是,如果你错误地调整了低暂停收集器并且它已经回归到“停止世界”完整收集。此时,您可能正在使用非压缩收集器,并且可能会出现碎片。但是解决方案是调整调整(或应用程序或堆大小)以避免陷入这种情况。
1 - 一些非常古老的Java实现使用了原始的标记扫描收集器。但它们早已不复存在。