Q:JVM如何估算一个服务需要消耗的最大内存
A:1.首先要知道实时数据的大小,实时数据的大小是由设置在其稳定状态执行应用程序所需的长期消耗对象的堆大小。GC日志的打开的情况下就能够相应用程序进行负载測试(-XX:+PrintGCTimeStamps-Xloggc:/tmp/gc.log-XX:+PrintGCDetails)和可视化的日志(比如在gcviewer的帮助下)来确定应用程序达到稳定状态的时间。观察到变化的趋势须要10-20次full GC的执行。
2.:实时数据大小和最佳内存配置參数之间有非常强的相关性。这个领域的证据也支持他们的建议:设置最大堆大小为3-4X(实时数据大小)。建议设置最大的永久代大小为1.2-1.5x(永久代中实时数据大小)以及-XX:NewRatio设置为1-1.5x的(实时数据大小)。