我正在尝试在eclipse中运行一个需要几百兆内存的算法,并且我已经指定了VM参数-Xmx512m,但我无法通过一些随意的内存限制,这似乎随着我不断减少尝试运行我的程序。物理记忆很好......可能是什么问题?
答案 0 :(得分:5)
Eclipse接受VM参数,但这些参数适用于Eclipse平台本身,您需要修改应用程序启动配置以确保它有足够的内存。
在Eclipse中运行程序时,它会使用默认参数创建一个新的启动配置。您可以通过选择运行 - > 运行配置.. (或调试 - > 调试配置...来修改这些参数),然后选择相关配置。如果它是Java主应用程序,则配置将位于 Java Application 下,可能包含您首次运行时选择的类或项目的名称。
选择启动配置,然后选择 Arguments 选项卡,然后在 VM参数窗格中输入相关的JVM参数(即-Xmx512m)。如果愿意,您也可以输入程序参数以传递给main方法。
更新:尝试传递的另一个参数是-XX:MaxPermSize=128m
,如果你的算法正在创建大量的方法和/或类对象(听起来就是这种情况)。
答案 1 :(得分:1)
查看参数-Xms。确保参数指定为运行模式(运行/调试)。
如果您仍有问题,可以使用分析器查看内存中发生的情况,或只记录Runtime.getRuntime()。freeMemory()可以提供帮助。
答案 2 :(得分:-1)
您应该确保在Run对话框中为测试应用程序指定参数,而不是在Eclipse本身的参数中指定。