2014-10-10 2 views
1

JSR 107 캐싱 (JCache)에 대해 읽었습니다.JSR 107 - 캐싱 (JCache) vs CPU 캐싱

혼란 스러웠습니다 : 모든 CPU는 (OS의 도움없이) 캐싱 메모리를 관리합니다.

Java 캐싱 처리기가 필요한 이유는 무엇입니까? (CPU가 자신의 캐시를 관리하는 경우)

내가 여기에서 무엇을 놓칠까요?

감사

이 만들거나 여러 자바 VM을 공유해야 할 비용이 객체와 같은 자바 객체를 캐시에 관한

답변

1

CPU 캐싱과 메모리 캐싱간에 차이가 있습니다. 이 JCache는 메모리에있는 항목을 캐시하므로 디스크와 같은 값 비싼 리소스 나 네트워크를 통해 가져올 필요가 없습니다.

그래서 CPU에는 메모리가 저장되지 않도록 캐시가 내장되어 있습니다. CPU는 보통 3 레벨의 캐시를 가지고 있으며 약 8MB를 저장합니다. CPU 캐싱은 걱정할 필요가 없습니다. 뭔가가 CPU 캐시에 없다면 메모리에서 꺼내야합니다.

메모리에 캐시하는 것은 앞에서 언급 한 것처럼 디스크 나 더 느린 리소스로 이동하지 않는 것입니다. 이 메커니즘 프로그램은 제어 권한을가집니다. 그래서 당신이 계속적으로 DB에 객체를 요구하지 않으려면 메모리를 저장하고 같은 객체를 계속 반환 할 수 있습니다. 이렇게하면 꽤 많은 성능을 절약 할 수 있습니다. Thomas가 언급 한대로 JCache는 JVM 전반에 걸쳐 캐싱을 제공 할 수있는 기능을 추가합니다. 내가 이해하는 바로는 이것은 다른 Java 프로그램이 동일한 캐시를 공유 할 수 있음을 의미합니다.

+0

더 많은 정보를 제공해 주실 수 있습니까? CPU 캐시는 똑같은 일을 할 것입니다 : 캐시상의 RAM 메모리 (값 비싼 리소스)가 없기 때문에 무엇이 다른가요? – user3668129

+1

CPU 캐시는 8MB로 제한되어 있으며 사용자가 제어 할 수 없습니다. 당신은 충분한 메모리, 기가 바이트의 것들을 가지고 있고 당신은 그것을 통제하고 있습니다. – uriDium

+0

도움 주셔서 감사합니다 :) – user3668129

2

. https://jcp.org/en/jsr/detail?id=107

캐시는 일반적으로 사용간에 데이터를 저장하는 데 일반적으로 사용됩니다. 너무 많은 시간이 걸리거나 사용 사이에 버리기 만하면 다시 만들 수 없으므로 캐시를 사용하는 것이 일반적입니다.

CPU 캐시는 메모리에서 읽는 데 더 많은 시간이 걸리기 때문에 데이터에 액세스해야하는 경우를 대비하여 데이터와 지침을 유지합니다.

JSR 107 캐시는 완전히 다른 수준에서 작동합니다.

+1

감사합니다. 풀을 사용하고 있고 런타임에 시작시 모든 객체를 생성하는 경우 JCache도 사용해야합니까? (이 시나리오에서 JCache를 사용하는 것이 효율적입니까?) – user3668129

+0

JCache에 익숙하지 않습니다. 풀을 사용하는 것은 캐싱의 일종이기도합니다. 간단한 수영장이 당신을 위해 일하는 경우에, 그것을 위해 가십시오. 정말 최고의 디자인이라면 응용 프로그램에 대한 더 많은 정보 없이는 말하기가 불가능합니다. –

+0

풀에 개체를 저장하고 있지만 항상 데이터가 캐시에 저장되고 RAM에 저장되지는 ​​않습니다. – user3668129