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 中的空闲堆大小不会增加的主要内容,如果未能解决你的问题,请参考以下文章

Bamboo 中的 Java 堆大小错误

由于堆大小增加,android中的内存不足错误

JVM内存分配

已用堆大小不断增加

在 Java 中为 weka 增加堆大小

如何增加.NET 的堆大小? [复制]