当前位置: 首页 > 面试题库 >

如何在Java中释放内存?

冀弘济
2023-03-14
问题内容

有没有一种类似于C free()函数的释放Java内存的方法?还是将对象设置为null并依靠GC是唯一的选择?


问题答案:

Java使用托管内存,因此分配内存的唯一方法是使用new运算符,而释放内存的唯一方法是依靠垃圾回收器。

该内存管理白皮书(PDF)可能有助于解释发生了什么。

你还可以致电System.gc()建议垃圾收集器立即运行。但是,Java Runtime做出最终决定,而不是你的代码。

根据Java文档,

调用gc方法表明,Java虚拟机将花费更多精力来回收未使用的对象,以使它们当前占用的内存可用于快速重用。当控制从方法调用返回时,Java虚拟机将尽最大努力从所有丢弃的对象中回收空间。



 类似资料:
  • 问题内容: 我编写了一个Python程序,该程序作用于大型输入文件,以创建代表三角形的数百万个对象。该算法是: 读取输入文件 处理文件并创建一个三角形列表,以其顶点表示 以OFF格式输出顶点:顶点列表,后跟三角形列表。三角形由顶点列表中的索引表示 在打印出三角形之前必须先打印出完整的顶点列表的OFF要求意味着在将输出写入文件之前,必须将三角形的列表保留在内存中。同时,由于列表的大小,我遇到了内存错

  • 问题内容: 在以下示例中,我有一些有关内存使用的相关问题。 如果我在解释器中运行, 我的机器上使用的实际内存最高为80.9mb。那我 实际内存下降,但仅限于。解释器使用基线,因此不向 释放内存有什么好处?是否因为Python正在“提前计划”,以为你可能会再次使用那么多的内存? 它为什么特别释放- 释放的量基于什么? 有没有一种方法可以强制Python释放所有已使用的内存(如果你知道不会再使用那么多

  • 问题内容: 我建立了一个用于HTTP2的连接,我该怎么做才能释放客户端和使用的资源? 问题答案: 不需要任何特殊方法来释放“已用”资源。当它变得不可访问时,垃圾收集器将回收它使用的内存。 不存储连接或状态信息。该文档甚至指出应重用: 客户端的传输通常具有内部状态(缓存的TCP连接),因此应重新使用客户端,而不是根据需要创建客户端。客户端可以安全地被多个goroutine并发使用。 如果使用(例如,

  • 问题内容: 在许多情况下,您确定您肯定不会再使用该列表,我希望现在就释放内存。 我不确定它是否真的释放了内存,您可以使用 实际上删除列表a中的所有元素。 那么最好的释放方法是吗? 不太确定。需要您的意见。 顺便说一句,元组和集合怎么样? 问题答案: 不要 永远 做到这一点。Python自动释放所有不再引用的对象,因此可以简单地确保如果未在其他任何地方引用列表,则将释放列表的内存。如果是这种情况,那

  • 问题内容: 如果您运行的代码调用Java中的本机库,那么当内存分配应在对象的生存期内持续时,释放这些库分配的内存的常用方法是什么?在C ++中,我将使用析构函数,但是Java从来没有真正使用过析构函数,现在更少了。 我最感兴趣的特定情况是JOCL,其中有一个对象,该对象包装了已编译的OpenCL内核及其所有始终相同的参数。表示已编译内核和参数的结构都在库侧分配,JOCL提供了一种方法,您可以调用该

  • 我设置了一个python代码来运行Selenium。在运行结束时,我使用来关闭实例。()我认为它应该从内存中释放(我在Windows 7上)。但是,每次运行之后,内存中都会保留一个实例。我希望有一种方法可以用python编写一些东西来终止进程。显然,不能完成这项工作。多谢了。