我正在制作游戏。我打算为我的游戏中的射弹部分创建一个类的很多实例。我只是想知道,因为我将创建这个类的许多实例,并且一旦它们在屏幕上渲染后抛射物就没有用了,是否真的可以创建它们?我知道在java中收集了一个垃圾,但是我怎么知道一个不再使用的类的实例会被解构?这是我真的应该担心的事情吗?
答案 0 :(得分:1)
我知道在java中收集了一个垃圾,但是我怎么知道一个不再使用的类的实例会被解构?
每个没有引用它的变量(指针)的对象都有资格进行垃圾回收。这当然并不意味着它会在不再被引用时立即销毁,但垃圾收集器会处理它而你不应该担心。
答案 1 :(得分:0)
Java虚拟机(JVM)负责通过调用以下方法调用所有未使用对象的 finalize 方法:
System.runFinalization();
或
Runtime rt = Runtime.getRuntime();
rt.runFinalization();
一旦JVM准备好未使用的对象列表,它就会通过给出这个未使用对象列表来调用GC(垃圾收集器)。
并且,如果您想手动调用gc,请使用:
System.gc();
Runtime rt = Runtime.getRuntime();
rt.gc();
或直接使用:
Runtime.getRuntime.gc();
重要:但基本上,您无法强制JVM调用GC。相反,您可以请求此请求可能会也可能不会清理内存。
答案 2 :(得分:0)
大多数情况下将这种东西留给垃圾收集器都没问题。但是,如果您担心大部分未使用的对象会占用大量内存,则可以使用object pool。这就是你创建固定数量的对象,跟踪你正在使用哪些对象并回收它们的地方,因此它们被限制在一块内存中。