2014-12-03 5 views
2

2008 년에 게시 된 쿼리 캐시에 이전 Nhibernate 문제가 있음을 알고 있습니다. Fluent NHibernate 1.4.0 및 NHibernate 3.3.1을 사용하고 있습니다. 대형 데이터 세트를 다루는 동안 여러 세션을 열고 여러 쿼리를 만드는 동기화 프로그램을 실행하고 있습니다. 내가 사용하는 모든 데이터 구조는 종결되며 일반적으로 유한 길이입니다. CLRProfiler 도구에서 가져온 것은 SessionFactoryImpl 클래스가 커지고 있다는 것입니다.힙 덤프가 연결된 Fluent Nhibernate 메모리 누수

다음은 메모리 힙 덤프를 볼 수 https://app.box.com/s/pvbe9ryfb0v168rka2e3에있는 링크에 대한 응용 프로그램

이동의 메모리 힙 덤프입니다.

내 응용 프로그램에서 Stateless 세션을 사용하고 있으며 블록을 사용하여 모든 것을 래핑하고 있습니다. 나는 다음과 같은 라인

return Fluently.Configure().Database(cfg).Mappings(m => { 
      var fluentMappings = m.FluentMappings; 

      fluentMappings.Add<UCBPremMap>(); 
      fluentMappings.Add<UTVSSFXMap>(); 
     }).Cache(c => { 
      c.Not.UseQueryCache(); 
      c.Not.UseSecondLevelCache(); 
     }).BuildSessionFactory(); 

을 가지고 내 세션 공장 작성자를 설정 한하지만 힙 다이어그램의 내 해석에서 생각의 NHibernate에 캐시 데이터 구조는 I 메모리가 부족할 때까지 성장을 계속합니다.

일반적으로 스택 오버플로는 다른 표현식 트리를 구문 분석 할 때도 발생합니다. 데이터베이스 호출을 최소화하려고하는데 때로는 개별 where 절이 1000 개인 표현식 트리를 만드는 컨텐츠로 필드를 검색 할 수 있습니다.

도움이 될 것입니다. 내 동료는 다른 프로그램에서, 자신의 프로그램이 OutOfMemory 예외를 쳤다는 것을 알아 차렸고, 이는 또한 Hibernate에 메모리 누수가 있음을 암시한다.

+0

-128에서 콘텐츠 크기를 위해 해시 테이블을 설정하는 반사를 사용하여 문제를 해결 한

? 누출이 있었습니까? 비슷한 문제가 있습니다. – Mithon

답변