在Java应用程序中,是否建议显式调用
Runtime.getRuntime().gc()
来提高性能?
以这种方式手动触发垃圾收集有哪些潜在的副作用,特别是它对运行时性能、延迟和整体应用程序效率的影响?
这种显式调用是否会在生产环境中导致任何意想不到的后果,或者是否存在这种方法被认为有利于性能优化的情况?
Runtime.getRuntime().gc()
会引起副作用。
Runtime.getRuntime().gc()
- 不保证 gc 会运行Runtime.getRuntime().gc()
- 根据文档的规定,这将提示 GC 它可以采取行动,如果 GC 决定已准备好运行,它可能会与应用程序处理线程重叠并导致延迟和缓慢。建议不要使用此功能,而是尝试调整 GC 以使系统正常运行。
即使你使用 Runtime.getRuntime().gc() 也不能保证内存会被释放
每次使用
Runtime.getRuntime().gc()
时,你的程序可能会变慢。