gpt4 book ai didi

Java:完全删除对象

转载 作者:行者123 更新时间:2023-12-01 18:54:58 26 4
gpt4 key购买 nike

我是Java新手,英语不够好,希望大家原谅。

问题1:我有一个ArrayList(J2SE)或Vector(J2ME),我有一个类(例如:子弹),当我开火时,我将该类的一个实例添加到列表中,在子弹击中目标后,我需要销毁它们并将它们从列表中删除。我想问:如何完全删除我需要删除的对象,我的意思是:释放该对象占用的所有内存(与C++中的删除指针相同)。对于普通对象,我们可以使用“= null”,但在这里,该对象位于 List 内,我们不能那样使用。我尝试使用 System.gc(),但这是一个坏主意,程序会变慢并且内存增加比我不使用 gc() 还要多。如果我只使用List.remove(bullet_index),内存会增加一点,但不会减少。

问题2:有任何其他想法可以使用“无限数量的子弹”进行射击并且具有内存安全。

我制作了一个简单的2D射击游戏

最佳答案

你根本做不到。 Java 在 JVM 上工作,JVM 通过 garbage collector 提供了一个用于分配和释放内存的托管环境。 .

您可以通过释放未使用的对象来提示 JVM 清理内存,但这通常不是它的使用方式。只需从列表中删除 Bullet 实例,如果没有其他引用它,那么最终它的内存将被释放。

如果您确实想节省内存,您应该考虑重用相同的实例,如果您计划在屏幕上同时最多显示精确数量的项目符号,则可以这样做,而不是从列表中删除过期的项目符号,您可以将它们添加到另一个列表中,然后用于拾取新的项目符号(通过设置其属性)。通过这种方式,您可以避免超过某个阈值。

关于Java:完全删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330908/

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