2015-07-15 2 views
4

Я довольно новичок в мире java и задавался вопросом, вызовет ли следующее утечки памяти, окружающие меня, переназначение вверх и вниз до нуля. просто хочу, чтобы убедиться, что это привычка вызывает никаких утечки памяти, потому что те плохоБудет ли причиной утечки памяти?

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); 
     } 

    } 

} 
+2

сборщик мусора будет обрабатывать это надлежащим образом, так что нет. –

+0

Возможный дубликат [Что такое сборщик мусора в Java?] (Http://stackoverflow.com/questions/3798424/what-is-the-garbage-collector-in-java) – Turing85

+0

@BrandonLing опубликовано как ответ – PandaTurtle

ответ

2

Сборщик мусора в этом примере будет надлежащим образом иметь дело с любой выделенной памятью, которая больше не используется. Таким образом, это не даст вам утечки памяти. Важно отметить, что вы все равно можете создавать утечки памяти, и я предлагаю вам посмотреть, как их можно сделать, чтобы избежать их в будущем.

1

Java является мусором языка, вы не получите утечки памяти. Однако, как говорится, вы можете протекать собственные ресурсы, поэтому всегда закрывайте файлы, сокеты, курсоры баз данных и т. Д., Когда закончите с ними.

1

Не бойтесь, garbage collector справится с этим!

Я думаю, что просто упоминание сборщик мусора, а затем bla bla bla не поможет вам в полном смысле этого слова.

Как у Java есть GB, поэтому создание ошибки true утечки памяти на Java не так-то просто! В SO есть много для Q/A: Creating a memory leak with Java. Вы можете также прочитать статью this, где утечки памяти описаны с хорошими примерами.

Следующие вещи могут возникнуть утечки памяти в Java:

  • Если номер обработчика файла превышает (например, при открытии файла в/из потока много раз, не закрывая его)

  • Если какой-либо статический поле содержит ссылку на объект.

  • Любой родной метод, который блокирует память, выходит за рамки сборщика мусора JVM. Это может привести к утечке памяти.

+0

Бог, я люблю этого парня –

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(); 
Смежные вопросы