我有配置XMS = XMX(两者都是4G)的Tomcat.
但是 – 如果我将XMS设置为例如1G怎么办?
据我所知 – JVM将使用提供的1G内存启动Tomcat.然后,如果应用程序需要更多 – JVM将在某段时间内将其提升至4G.提升它 – Java必须运行一些操作(调整大小,重新定位内存中的页面?) – 这需要一些时间和CPU资源,对吗?
在Tomcat的应用程序之后发生了什么并不需要那么多内存? Java将再次运行操作以减少已用内存?
谢谢.
附:为什么我要问 – 使用XMS = 1G和XMX = 4G Apache Jmeter给出的结果远远少于(吞吐量和平均值),而不是我使用XMX和XMS都启动了Tomcat.
解决方法:
是的,JVM必须分配更多内存并重新安排所有堆空间(Eden,from,to,old和PermGen)以适应新内存.如果您计划让您的webapp使用一定数量的堆空间,那么最好在性能方面预先分配整个堆.
一旦完成,JVM将永远不会释放它从操作系统中获取的内存.因此,如果您需要4GiB堆并且JVM最终需要它,那么您的堆将保持在4GiB,直到JVM终止.
标签:java,memory,tomcat
来源: https://codeday.me/bug/20190629/1323952.html