[java] 자바에서 객체를 삭제 하시겠습니까?

내가 만든 개체 (당신을 따르는 타원)를 삭제하고 싶지만 어떻게해야합니까?

delete follower1;

작동하지 않았습니다.

편집하다:

좋아요, 좀 더 맥락을 알려 드리겠습니다. 나는 당신이 조종 할 수있는 타원과 당신을 따르는 타원으로 작은 게임을 만들고 있습니다. 이제 DrawPanel.class라는 파일이 있습니다.이 클래스는 화면의 모든 것을 그리고 충돌, 사운드 등을 처리합니다. 플레이어를 따르는 타원 인 적군. 클래스가 있습니다. 제어 할 수있는 플레이어 인 entity.class가 있습니다. 그리고 플레이어가 팔로워와 교차하면 플레이어 개체를 삭제하고 싶습니다. 내가하는 방식 :

    public void checkCollisions(){
    if(player.getBounds().intersects(follower1.getBounds())){
        Follower1Alive = false;
        player.health = player.health - 10;
    }
}



답변

null을 할당하거나 선언 된 블록을 그대로 두어 참조를 제거해야합니다. 그 후 가비지 수집기에 의해 자동으로 삭제됩니다 (즉시가 아니라 결국).

예 1 :

Object a = new Object();
a = null; // after this, if there is no reference to the object,
          // it will be deleted by the garbage collector

예 2 :

if (something) {
    Object o = new Object(); 
} // as you leave the block, the reference is deleted.
  // Later on, the garbage collector will delete the object itself.

현재 찾고있는 것은 아니지만 참고 : System.gc () 호출로 가비지 수집기를 호출 할 수 있습니다.


답변

C ++이 표시됩니다.

deleteJava 에는 없으며 모든 객체는 힙에 생성됩니다. JVM에는 참조 횟수에 의존하는 가비지 수집기가 있습니다.

개체에 대한 참조가 더 이상 없으면 가비지 수집기에서 수집 할 수있게됩니다.

myObject = null하지 않을 수도 있습니다. 예를 들면 :

Foo myObject = new Foo(); // 1 reference
Foo myOtherObject = myObject; // 2 references
myObject = null; // 1 reference

이 모든 작업은 참조 myObject를 null 로 설정 myObject하기 만하면 참조 횟수를 1만큼 감소시키는 것 외에는 한 번 가리키는 개체에 영향을주지 않습니다 . myOtherObject여전히 해당 개체를 참조 하므로 아직 수집 할 수 없습니다.


답변

개체가 사라지는 데 도움이 필요하면 참조를 null로 설정하십시오.

String x = "sadfasdfasd";
// do stuff
x = null;

참조를 null로 설정하면 개체에 대한 다른 참조가없는 한 개체가 가비지 수집 될 가능성이 높아집니다.


답변

Java에서 객체를 삭제할 필요가 없습니다. 개체에 대한 참조가 없으면 가비지 수집기에 의해 자동으로 수집됩니다.


답변

를 사용하여 참조를 제거 할 수 있습니다 null.

수업이 있다고 가정 해 보겠습니다 A.

A a = new A();
a=null;

마지막 문은 개체의 참조를 제거 a하고 해당 개체는 JVM에 의해 “가비지 수집”됩니다. 이를 수행하는 가장 쉬운 방법 중 하나입니다.


답변

네, 자바는 가비지 수집, 메모리를 삭제합니다.


답변

//Just use a List
//create the list
public final List<Object> myObjects;

//instantiate the list
myObjects = new ArrayList<Object>();

//add objects to the list
Object object = myObject;
myObjects.add(object);

//remove the object calling this method if you have more than 1 objects still works with 1
//object too.

private void removeObject(){
int len = myObjects.size();
for(int i = 0;i<len; i++){
Objects object = myObjects.get(i);
myObjects.remove(object);
}
}