将java内存限制为64MB
我有家庭作业,内存限制是64MB,我的代码使用68MB。 我已经将数组设置为null并运行将java内存限制为64MB,java,memory,Java,Memory,我有家庭作业,内存限制是64MB,我的代码使用68MB。 我已经将数组设置为null并运行Runtime.getRuntime().gc() 有什么我能做的吗?从内存中删除所有我不需要的东西?怎么做 我有3个int数组和3个float数组,2个双数组,它们的大小都相同 a = null; size = null; prize = null; required = null; b= null; potr= null;
Runtime.getRuntime().gc()代码>
有什么我能做的吗?从内存中删除所有我不需要的东西?怎么做
我有3个int数组和3个float数组,2个双数组,它们的大小都相同
a = null;
size = null;
prize = null;
required = null;
b= null;
potr= null;
result = null;
Runtime.getRuntime().gc();
大概是代码占用了大部分内存。使用较少晦涩的库类。或者获得JDK 1.00。代码引用的所有外部库是什么。。。。。?jvm在执行之前加载内存中的所有类…如果您删除了不必要的导入和库,这将减少内存占用…如果满足您的要求,您还可以使用功能较少的早期版本的jvm。希望这会有所帮助。首先,检查您的程序是否真的不会以64 MB的速度运行,使用命令行选项-Xmx64m
(确切的语法可能取决于您的JRE版本)。只有当您在该设置下得到一个OutOfMemoryError
时,才会出现问题
如果Java在没有命令行限制的情况下运行,它往往会占用比严格要求更多的内存。所以我想,如果您在Windows任务管理器中看到68MB或同等大小的内存,一切都会正常
如果您确实遇到OutOfMemoryError
,您可以尝试分析您的应用程序。在我们公司,我们正在使用商业JProfiler,这是一种可以为您提供内存使用详细信息的工具。但要理解分析结果需要学习曲线
另一种方法是在此处或处发布完整的代码,这样我们可以提供更具体的帮助。如果您确实需要容纳64 MB的内存,则堆大小需要小于此值。内存占用将是堆的大小,加上所有线程的所有堆栈的总和,再加上JVM本身和链接到它的任何本机代码分配的“本机堆”空间。