Maven 中的空闲堆大小不会增加
Posted
技术标签:
【中文标题】Maven 中的空闲堆大小不会增加【英文标题】:Free heap size does not increase in Maven 【发布时间】:2011-06-07 01:30:12 【问题描述】:当我运行 maven-jetty-plugin 时,我运行下一个命令:
mvn -DMAVEN_OPTS="-Xmx1024m -Xms512m" -Djetty.port=8080 jetty:run
但是当我尝试用
输出空闲堆大小时Long heapFreeSize = Runtime.getRuntime().freeMemory();
它总是输出大约 30000000 的东西。 我想它的大小以字节为单位,所以大约 30 兆字节。 那么为什么空闲堆内存没有增加呢?
【问题讨论】:
它是否给出了 OutOfMemoryError?您是否尝试过 -XX:MaxPermSize=1024m ? freeMemory() 显示未来分配的空间。永久对象进入永久空间。乌多。 如果我尝试 -XX:MaxPermSize=1024 没有任何变化...我现在无法在 OutOfMemoryError 上对其进行测试...您的意思是此空间(用于将来分配)将根据应用程序的需要而增加? maxMemory() 显示内存总量。请粘贴 maxMemoryoutput freeMemory(): 25288024 maxMemory(): 259522560 ,似乎最大内存是空闲内存的十倍 【参考方案1】:MAVEN_OPTS
是一个环境变量,由 Maven 读取并用作 fork java 进程的命令行参数。命令行参数控制 Java 可执行文件的启动方式,例如内存设置之类的东西。
-D
用于设置 Java 系统属性,这与命令行参数完全不同。 Java 系统属性可以通过编程方式读取,例如通过使用 System.getProperties()。
窗户:
SET MAVEN_OPTS="-Xmx1024m -Xms512m"
mvn -Djetty.port=8080 jetty:run
Linux:
export MAVEN_OPTS="-Xmx1024m -Xms512m"
mvn -Djetty.port=8080 jetty:run
【讨论】:
我不得不重读两遍才能得到它,但后来解决了我所有的问题 :-) 谢谢。节省了相当多的时间,我不会再摆弄东西了。【参考方案2】:我认为 -DMAVEN_OPTS="-Xmx1024m -Xms512m" 不是在这里指定内存参数的正确方法。
设置一个名为 MAVEN_OPTS 的环境变量,内容为“-Xmx1024m -Xms512m”
【讨论】:
你的意思是 mvn jetty:run -Xmx1024m -Xms512m ?它不运行。 mvn jetty:run -DXmx1024m -DXms512m 运行,但是内存和 MAVEN_OPTS 一样 抱歉我的错,我认为设置环境变量的唯一方法以上是关于Maven 中的空闲堆大小不会增加的主要内容,如果未能解决你的问题,请参考以下文章