我有作业分配,内存限制为64 MB,我的代码使用68 MB。
我已经将数组设置为null并运行Runtime.getRuntime().gc();
我能做些什么吗?从内存中删除不需要的所有内容?怎么样?
我有3个int数组和3个float数组,2个double数组,它们都具有相同的N给定大小。
a = null;
size = null;
prize = null;
required = null;
b= null;
potr= null;
result = null;
Runtime.getRuntime().gc();
答案 0 :(得分:3)
首先,使用命令行选项-Xmx64m
检查程序是否真的不能以64 MB运行(确切的语法可能取决于您的JRE版本)。只有在该设置下获得OutOfMemoryError
时,您才有问题。
如果Java在不受命令行限制的情况下运行,则它倾向于获取比严格必要更多的内存。因此,我想,如果您在Windows Task Manager中看到68 MB或等效的文件,一切都会好的。
如果您确实遇到OutOfMemoryError
,则可以尝试分析您的应用程序。在我们公司,我们正在使用商业化的JProfiler,该工具可以为您提供有关内存使用情况的详细信息。但是了解分析结果需要学习曲线。
另一种方法是在此处或https://codereview.stackexchange.com/处发布完整的代码,以便我们提供更具体的帮助。
答案 1 :(得分:-1)
大概是代码占用了大量内存。使用较少的晦涩的库类。或获取JDK 1.00。
答案 2 :(得分:-1)
您的代码引用的所有外部库是什么.....? jvm会在执行之前将所有类加载到内存中。...如果您删除了不必要的导入和库,这将减少您的内存占用...也可以在满足您要求的情况下使用功能较少的早期版本的jvm。 / p>