Java 언어의 finalize()와 비슷한 오브젝트에 비헤이비어를 구현하고자합니다. 일부 문이 실행되기를 원합니다 가비지 수집 바로 전에이 발생합니다. finally 블록은 try 블록 이후에 마침내 실행되므로 여기서는 유용하지 않습니다. 이는 필자의 요구 사항이 아닙니다. 기본적으로 JVM의 힙에서 언로드되기 직전에 객체를 직렬화하려고합니다. 제발 조언.오브젝트의 보증 된 finalize 작동을 구현하는 방법
답변
종료시 JVM에 후크를 추가 할 수 있습니다. http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html#addShutdownHook%28java.lang.Thread%29
@ user949300의 팬텀과 함께 사용 가능한 것으로 보입니다. 그러나 후크는 모든 객체에 약한 참조를 저장해야합니다. 후크에 대한 자바 서비스 인터페이스를 생성하면 객체 생성자에서 사용할 수 있습니다. 하지만 못생긴가요?
은 JVM이 호출이 보장되지 않기 때문에 어떤 상관없이 실행되지 않을 것입니다 finalize()
메소드를 구현하는 방법은 없습니다. 예를 들어, 프로그램이 종료 될 때 힙에 남아있는 객체는 현재 JVM에 따라 finalize()
메서드가 호출되지 않을 수 있습니다.
일반적으로 finalize()
을 사용하여 메모리를 제외한 모든 리소스를 해제하는 것이 좋습니다. 리소스를 해제하는 것보다 훨씬 적은 작업을 수행하는 것이 좋습니다. 객체를 직렬화하려면 다른 시점을 선택하십시오.
finalizers에 대해 알아야 할 거의 모든 내용을 요약 한 good article이 있습니다.
필자는 팬텀 레퍼런스 (나쁜 스타 워즈 영화 중 한 명처럼 들린다)를 사용한 적이 없지만 트릭을 할 수있는 것처럼 들립니다.
"콜렉터가 해당 지시 대상을 다시 회수 할 수 있다고 판단한 후 큐에 대기하는 팬텀 참조 오브젝트 팬텀 참조는 Java finalization에서 가능한 것보다 더 유연한 방식으로 사전 상속 정리 작업을 예약하는 데 가장 자주 사용됩니다 메커니즘 "
큰 제안은 내 문제를 해결했습니다. Phantom 참고 자료 [http://www.pawlan.com/monica/articles/refobjs/] – sij
에 대한 최고의 기사 중 하나입니다. 참고 주셔서 감사합니다. – user949300
- 1. 보증 된 배송
- 2. 캐시 된 오브젝트의 효율적인 복제
- 3. finalize 중 객체 참조
- 4. finalize() 메서드를 잘 사용합니다.
- 5. . NET FINALIZE CONCEPT 문제
- 6. 형태 보증 keyvaluepair 열거
- 7. Oracle의 트랜잭션 무결성 보증
- 8. 오브젝트의 3D 회전
- 9. 오브젝트의 링크 된 목록에있는 오브젝트에서 변수를 가져 오는 방법
- 10. NSURLConnection의 보증 주문
- 11. D : 보증 파괴
- 12. JavaScript : 보증 오브젝트 초기화
- 13. HTTP Post 연결 보증
- 14. 보증 앞서 구현
- 15. 이메일 접수 보증
- 16. Executor.execute() JMM 보증
- 17. 오브젝트의 값을 다른 오브젝트의 이름으로 사용하기
- 18. Hibernate : 맵핑 된 오브젝트의 minor 오브젝트 캡슐화
- 19. 스태틱 메소드로 컴파일 된 companion 오브젝트의 메소드?
- 20. SpecFlow 테이블과 Moq 조롱 된 오브젝트의 결합
- 21. 언제 자바에서 finalize() 메서드를 사용해야합니까?
- 22. finalize() 도중 예외가 throw되면 어떻게됩니까
- 23. Sqlite Finalize 문이 실패 함
- 24. LinqToSql 계산 된 열을 구현하는 방법
- 25. QTableView에서 고정 된 행을 구현하는 방법
- 26. 레일에 중첩 된 양식을 구현하는 올바른 방법
- 27. 들여 쓰기 된 테두리를 구현하는 방법
- 28. 미리 컴파일 된 헤더를 프로젝트에 구현하는 방법
- 29. 스타일이 포함 된 ListView를 구현하는 방법
- 30. Ada (2005 또는 2012)에서 java finalize 블록과 동일한 기능을 구현하는 모범 사례
close() 메소드를 구현하십시오. 토론 here http://stackoverflow.com/questions/158174/why-would-you-ever-implement-finalize –
그래, 내가 알기로는 close()가 길 아래로 할 수있는 최신 킥이다. –