【问题标题】:Free heap size does not increase in MavenMaven 中的空闲堆大小不会增加
【发布时间】: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 ,似乎最大内存是空闲内存的十倍

标签: java maven jetty heap-memory maven-jetty-plugin


【解决方案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 一样
  • 抱歉我的错,我认为设置环境变量的唯一方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 2012-06-17
  • 1970-01-01
  • 2022-11-21
  • 2011-01-14
  • 2014-10-24
  • 2012-12-07
相关资源
最近更新 更多