2017-12-20 12 views
0

.NET에서 IKVM을 사용하여 Java로 실행되는 코드가 있습니다. 정확히 동일한 소스 코드 인 Java 코드는 Java에서 5 - 10 배 더 빠르게 실행됩니다.IKVM에서 가비지 수집 속도를 높일 수 있습니까?

우리가 보았던 가장 큰 차이점은 .NET 측에서 30 % 이상이 가비지 수집기에 있다는 것입니다.

GC 시간을 줄이기 위해 할 수있는 일이 있습니까?

답변

0

개체 수명주기를 살펴보고 (예를 들어) flyweights 또는 object pool을 사용하여 작성한 개체 인스턴스의 수를 최소화 할 수 있는지 검토하십시오. 생성하는 인스턴스가 적 으면 적은 수의 인스턴스 만 수집해야합니다. 코드를 프로파일 링하고, 사용하는 알고리즘을 살펴보고, 프로파일 링을 통해 발견 한 gc 이벤트를 최소화 할 수있는 패턴을 검색하십시오. 은색 총알이 필요 하겠지만, 은색 총알이 있다면 아마도 이미 활성화되었을 것입니다.

+0

그래, 이미 우리가 할 수있는 곳에서. 실망스러운 점은 Java에서 문제가되지 않는다는 것입니다. 그리고 .NET을 사용하면 GC가 훨씬 나빠질 수 있습니다. IKVM이이 모든 작업을 수행하는 방법에 대해 뭔가가 있습니다. 그러나 당신이 말했듯이, 해결책이 있다면, 그들은 그것을 켜야했을 것입니다. –