将java内存限制为64MB

将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;

我有家庭作业,内存限制是64MB,我的代码使用68MB。 我已经将数组设置为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本身和链接到它的任何本机代码分配的“本机堆”空间。