在 Oracle 的 G1 GC 文档中,G1 GC 不建议调整 JVM 选项,因为吞吐量和延迟是稳定的。
但是,我在文档中找不到关于服务器堆大小应该是多少的页面。 服务器的用途和流量的大小各不相同。 它可以是一个简单的 Restful API,也可以是一个耗时较长的任务。 因此,堆大小应根据服务器应用程序的不同而不同。 此外,如果堆大小不足,Full GC 将发生多次,最终导致严重问题。
- 如何确定合适的初始堆大小?
- 什么时候应该增加堆大小?
- 是否有监测异常体征的方法和工具?
最佳答案
我愿意
- 为您要优化的工作负载创建基准
- 针对此工作负载的分配调整应用程序的性能。这可以改变你所做的一切,所以先做吧。例如使用飞行记录器。
- 尝试使用不同堆大小的应用程序,看看在什么时候添加更多内存似乎没有什么不同。
- 如果有时间,尝试更多的工作量。
How do you determine the appropriate initial heap size?
应用程序几乎立即增长到多大?如果您使用更大的尺寸进行基准测试,它似乎有帮助吗?
When should you increase the heap size?
当确定您的应用程序没有内存泄漏并且经过合理调整后,服务器需要更多内存或者如果有更多内存会运行得更快。
Are there methods and tools to monitor abnormal signs?
对于一个可以连续运行的工具,你可以从jstat
开始
关于java - 使用 G1 GC 时如何知道何时调整堆大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815249/