首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java如何使用XMX和XMS内存?

Java如何使用XMX和XMS内存?
EN

Stack Overflow用户
提问于 2013-12-18 15:35:21
回答 2查看 4.6K关注 0票数 4

我有Tomcat,配置了XMS=XMX (两者都是4G)。

但是-如果我将XMS设置为1G呢?

据我所知,JVM将使用提供的1G内存启动Tomcat。然后,如果应用程序需要更多- JVM将在某一段时间内提高到4G。要想实现它-- Java必须运行一些操作(调整大小,在内存中重新定位页面?)--这需要一些时间和CPU资源,对吗?

Tomcat的应用程序不需要这么多内存之后发生了什么?Java将再次运行动作以减少使用的内存?

谢谢。

P.S.为什么我要问-使用XMS=1GXMX=4G Apache Jmeter给出的结果要比使用XMXXMS的4G启动Tomcat的结果少得多(ThroughputAverage)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-18 21:55:25

是的,JVM必须分配更多的内存并重新安排所有堆空间(Eden、from、to、old和PermGen)以适应新内存。如果您计划让您的the应用程序使用一定数量的堆空间,那么从性能上看,您最好预先分配整个堆。

JVM将永远不会释放它从操作系统获得的内存,一旦这样做了。因此,如果您需要4GiB堆,并且JVM最终接受它,那么您的堆将停留在4GiB,直到JVM终止为止。

票数 2
EN

Stack Overflow用户

发布于 2013-12-18 16:52:59

当将Xms和Xmx设置为相等值时,JVM将不必调整堆的大小,并避免JVM在这方面花费的时间。在您的情况下,这确实会带来更好的结果,因为使用Jmeter,您将强调需要增加堆的服务器。在使用Jmeter完成之后,Tomcat将在一些垃圾收集器活动之后减少堆,这些活动将销毁未加载的对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20662221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档