gpt4 book ai didi

java - 立即从堆中删除对象

转载 作者:行者123 更新时间:2023-12-02 10:32:39 25 4
gpt4 key购买 nike

我目前正在编写一个使用 netty 的服务器,并且有很多数据包传入。如果我读取了该数据包,我想立即将其从 RAM 中删除。这意味着我不想依赖 GC,而是自己立即释放 RAM。由于 GC 仅每 5-50 秒运行一次,但我的代码速度更快,并且会保持较低的 RAM 占用。

是否可以调用一个方法来告诉 Java 该对象不再需要并且应该立即删除?

最佳答案

在 Java 中,您无法立即从堆中删除单个对象。

您可以(尝试)通过调用 System.gc() 强制进行垃圾回收1,但它是 bad for performance .

您可以(尝试)管理您的对象(例如使用对象池),以便不必经常运行 GC,但这会使您的程序更加复杂并限制您可以使用的库。而且它实际上并没有释放内存。 (“释放”的对象将返回到池的空闲列表中,但如果空闲列表上有太多对象,回收空间的唯一方法就是 GC。)

如果您确实需要这种级别的控制,那么最好使用不需要垃圾收集器的语言。尝试 C 或 C++。或者铁锈。

<小时/>

1 - 有一个 JVM 选项 (-XX:DisableExplicitGC),用于确定对 System.gc() 的调用是否实际导致垃圾回收。有关此选项和相关选项的详细信息,请参阅 java 手册条目。

关于java - 立即从堆中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53518295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com