2016-06-01 1 views
0

프로젝트의 성능 향상에 착수했습니다. (봄 프로젝트, 봄에 많은 경험이 없습니다. 약 7 개월!) 캐싱하는 동안 대부분의 메모리가 활용되고 있습니다. 약간의 R & D 이후, 나는 Ehcache가 나를 도울 수 있다는 것을 알았다. 우리 프로젝트에서는 정적 HashMap을 사용하여 서버에서 DB의 데이터를로드했으며이 맵은 애플리케이션 전체에서 사용합니다. Ecache와 Spring (스프링 부트가 아닌)의 몇 가지 예를 보았지만 어디에서나 HashMaps가있는 기존 코드로 대체하는 방법을 이해할 수 없습니까? 또한 다른 조언이나 제안이 있으면 게시하십시오 .. 나는 큰 도움이 될 것입니다 ..! 같은 질문에 대한 stackoverflow에 대한 몇 가지 링크가 있지만, 그들에 대한 답변이 없어 .. 제발 .. 도와주세요!ehcache와 spring을 사용하여 캐시 캐싱을위한 데이터를로드하여 기존 캐싱 메커니즘을 재정의합니다.

+1

"HashMaps everywhere"? 그들은 한 자리에 있어야합니다. 그것은 당신의 문제의 큰 부분입니다. 하나에 통합하는 데 도움이되는 것은 없습니다. 삽을 들고 파기 시작하십시오. 'Everywhere'의 – duffymo

+0

에서 필자는 데이터를 캐싱하는 모든 데이터베이스 테이블에 대해 설명합니다. 거대한 데이터 크기로 인해 많은 메모리를 사용하고있는 곳이 2 곳 밖에 없습니다. :) –

+0

캐싱, 로깅 및 트랜잭션은 aspect 지향 프로그래밍이 탄생 한 것입니다. 자신이 롤백 한 HashMaps에서 EhCache 또는 다른 기술로 전환해도 큰 항목을 더 작게 만들 수는 없습니다. EhCache와 동일한 문제가 발생합니다. 그런 큰 개체를 캐싱해야하는지 다시 생각해보십시오. 얼마나 자주 사용됩니까? 고전적인 시간/공간 트레이드 오프를 만들어야합니다. 충분한 공간이 있으면 캐시하여 시간을 절약합니다. 네가하지 않으면 너는 시간을 보낸다. 당신의 문제는 기술이 아닙니다. – duffymo

답변

2

HashMap에 데이터가 있고 이제 EHCache를 사용하려는 경우,이 항목이 캐시에 이미있는 경우 한 항목의 액세스 시간은 현재 가지고있는 항목보다 10 배 이상 많습니다. 히트 히트에 대한 런타임 비교 (In Process Java Cache Benchmarks)를 참조하십시오.

메모리에 저장하려면 데이터 요청시 데이터를 다시로드해야하므로 액세스 시간이 훨씬 길어집니다.

응용 프로그램이 HashMap에서 작동하고 HashMaps가로드 된 후 DB에 액세스 할 필요가없는 경우 실제로 응용 프로그램에 맞는 완벽한 사용자 지정 캐시가 있습니다.

+0

아, 예, 공유 링크를 통과 한 후 지금 알게되었습니다. 하지만 여전히 내 DAO 파일 중 적어도 하나에 대해 직접 테스트하고 그 작업을 수행하려고했습니다. 내 의심에 뭔가를 추가 할 수 있다면 그것은 좋을거야 .. :) –