我对java世界相当新,并且想知道以下是否会导致我周围的任何内存泄漏重新分配到null。只是想确保这不会导致任何内存泄漏,因为那些是坏的
import android.graphics.Point;
import android.util.Log;
import android.view.MotionEvent;
public class TouchHandler {
public TouchHandler() {
}
static Point down;
static Point up;
static boolean isUp = false;
static boolean isDown = false;
public static void processEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.i("betterinf", "ACTION DOWN");
down = new Point();
down.x = (int) event.getX();
down.y = (int) event.getY();
isDown = true;
break;
case MotionEvent.ACTION_UP:
Log.i("betterinf", "ACTION UP");
down = new Point();
up.x = (int) event.getX();
up.y = (int) event.getY();
isUp = true;
break;
case MotionEvent.ACTION_MOVE:
break;
}
}
public static void Update(Long deltaTime) {
if (isDown && isUp) {
//event has happened
isDown = false;
isUp = false;
down = null;
up = null;
Point vel = new Point();
vel.x = down.x - up.x;
vel.y = down.y - up.y;
GM.getBallManager().newPlayerBall(down, vel);
}
}
}
答案 0 :(得分:2)
此示例中的垃圾收集器将适当地处理不再使用的任何已分配内存。所以,这不会给你一个内存泄漏。重要的是要注意你仍然可以创建内存泄漏,我建议你查看如何在将来避免它们。
答案 1 :(得分:1)
Java是一种垃圾收集语言,你不会得到内存泄漏。但是,据说你可以泄漏本机资源,所以在完成它们时总是关闭文件,套接字,数据库游标等。
答案 2 :(得分:1)
不要担心,garbage collector会处理这个问题!
我认为只要提及垃圾收集器然后bla bla bla就不会在最大程度上帮助你。
由于Java具有GB,因此在Java中创建 true 内存泄漏并不容易! SO中有很多问题,如:Creating a memory leak with Java。您也可以阅读this文章,其中描述了内存泄漏的好例子。
以下内容可能会在java中发生内存泄漏:
如果文件处理程序的数量超过(例如,多次打开文件输入/输出流而不关闭它)
如果任何静态字段包含对象引用。
锁定内存的任何Native方法都不在JVM垃圾收集器的范围内。这样会导致内存泄漏。
答案 3 :(得分:0)
Java有垃圾收集器。实际上,我在你的代码中看到了一个错误:
case MotionEvent.ACTION_UP:
Log.i("betterinf", "ACTION UP");
down = new Point();
up.x = (int) event.getX();
up.y = (int) event.getY();
isUp = true;
break;
修改
down = new Point();
到
up = new Point();