매우 복잡한 객체 그래프 G
과 o1
의 객체가 G
입니다. G
은 NHibernate를 사용하여 데이터베이스에 기록됩니다. 그러나 데이터베이스에 영구 항목 o1
(o1_p
이라고 함)이있는 경우 o1_p
을 o1
으로 바꿉니 다. 따라서 데이터베이스에 중복 항목이 없어야합니다. 이제 나는 NHibernate가 그 일을하게하고 나중에 데이터베이스를 조사한다. 이제 나는 피하려고 노력한 상황이 있습니다. 원래 o1_p
오브젝트에 대한 항목과 o1
이 데이터베이스에 있습니다. 지금까지 가지고있는 유일한 설명은 o1
이 다른 경로를 통해 G
에 도달 할 수 있으며 그래서 hibernate는 그것을 데이터베이스에 저장합니다. 이 경우에 대해 확인할 수있는 방법이 있습니까, 즉 가비지 수집기에 얼마나 많은 참조가 있는지 물을 수 있습니까 (o1
). 또는 그래프 언어로 말하십시오 : 얼마나 많은 들어오는 가장자리 o1
있나요?C#에서 개체 그래프 내에서 개체에 도달 할 수 있는지 어떻게 확인할 수 있습니까?
0
A
답변
1
아니요, 가비지 수집기에 o1에 대한 참조 수를 요청할 수 없습니다. .NET은 참조 카운팅을 사용하지 않습니다.
기본적으로 모든 그래프 탐색을 직접 수행해야합니다. 이는 이미 조사한 객체의 캐시와 결합 된 일종의 방문자 알고리즘을 객체 그래프에 구현하는 것을 의미합니다. 그리고 예,이 은 GC가 수행하는 것과 비슷한입니다.하지만 처리 방법을 찾지 못한다고 생각합니다. (그리고 아마도 GC가 무언가가 쓰레기가 아니며 어쨌든 그것을 무시하고 코드에 적합하지 않은 특수한 트릭과 관련된 가장자리 사례가있을 수 있습니다.)
관련 문제
- 1. AppleScript 개체에 특정 속성이 있는지 확인할 수 있습니까?
- 2. 파일이 있는지 어떻게 확인할 수 있습니까?
- 3. 변수가 있는지 어떻게 확인할 수 있습니까?
- 4. 이 헤더가 있는지 어떻게 확인할 수 있습니까?
- 5. 뷰가 데이터베이스에 있는지 어떻게 확인할 수 있습니까?
- 6. MSBuild : 프로세스가 있는지 어떻게 확인할 수 있습니까?
- 7. 개체 유형이 이미지인지 어떻게 확인할 수 있습니까?
- 8. scp를 사용할 수 있는지 어떻게 확인할 수 있습니까?
- 9. 브라우저 창/탭에 포커스가 있는지 여부를 어떻게 확인할 수 있습니까?
- 10. 호스트에 연결할 수 있는지 어떻게 확인할 수 있습니까?
- 11. 파이썬에 자식이 있는지 어떻게 알 수 있습니까?
- 12. 어떻게 C에서 오디오를 녹음 할 수 있습니까?
- 13. javascript - 아약스가 현재로드되고 있는지 확인할 수 있습니까?
- 14. 키보드 진동이 켜져 있는지 확인할 수 있습니까?
- 15. 장치가 jailbroken되어 있는지 확인할 수 있습니까?
- 16. 위치 서비스가 활성화되어 있는지 확인할 수 있습니까?
- 17. iPhone에 암호가 있는지 확인할 수 있습니까?
- 18. Objective-C에서 내 메서드의 "호출자"를 어떻게 확인할 수 있습니까?
- 19. 파이썬에서 Tkinter를 사용하여 키가 눌려져 있는지 어떻게 확인할 수 있습니까?
- 20. 데이터베이스에서 모든 트리거가 켜져 있는지 어떻게 확인할 수 있습니까?
- 21. PHP 사용 GZIP가 켜져 있는지 어떻게 확인할 수 있습니까?
- 22. iPhone이 도킹되어 있는지 확인할 수 있습니까?
- 23. 서비스가 있는지 Wix3에서 확인할 수 있습니까?
- 24. 개체가 참조되고 있는지 확인할 수 있습니까?
- 25. VNC 연결이 활성화되어 있는지 확인할 수 있습니까
- 26. C# var가 정의되어 있는지 확인할 수 있습니까?
- 27. 단어가 사전에 있는지 여부를 어떻게 확인할 수 있습니까?
- 28. 브라우저 창에 포커스가 있는지 여부를 어떻게 확인할 수 있습니까?
- 29. XPath에서 목록에 특정 항목이 있는지 어떻게 확인할 수 있습니까?
- 30. 요소가 jQuery에서 다른 요소 안에 있는지 어떻게 확인할 수 있습니까?