자바는 메모리관리를 자동으로 처리하는 가비지 컬렉션시스템을 사용하기 때문에 개발자는 일반적으로 메모리 관리에 대해 크게 걱정하지 않아도 된다.
그러나 여전히 공간복잡도는 자바애플리케이션의 이슈가 됩니다. 이유는 다음과 같습니다.
모든 자바애플리케이션은 메모리 제한을 갖습니다. JVM은 할당된 메모리 크기를 넘어서는 객체를 생성하려고 하면 OutOfMemoryError 예외를 발생시킨다. 따라서 메모리 사용량을 최소화하여 애플리케이션이 OutOfMemoryError 예외를 발생을 시키지 않도록 하는 것이 중요하다.
메모리 사용량이 많은 경우, 가비지컬렉션에 소요되는 시간이 증가할 수 있다. 따라서 메모리 사용량을 줄이면 애플리케이션의 전반적인 성능을 향상시킬 수 있다.
저하 할수 있다.
그 이유는 가비지컬렉션 과정이 실행되는 동안에는 애플리케이션이 일시 중지되기 때문이다. 따라서 가비지
컬렉션이 오래 걸릴수록 애플리케이션의 실행이 중지되는 시간이 늘어나므로 전체적인 성능이 저하될 수 잇다.
또한, 가비지 컬렉션이 더 많은 메모리를 사용하게 되면, 메모리 부족현상이 발생할 가능성이 높다.
메모리 부족이 발생하면, 가비지컬렉션 뿐만 아니라 애플리케이션의 실행 전반에 걸쳐 성능 저하가 발생할 수
있다.
메모리 누수를 방지하고 , 객체를 생성 및 소멸을 최소화하는 등의 방법으로 가비지 컬력센을 최적화 할 수 있다.
가비지컬렉션은 더이상 사용되지 않는 객체들을 찾아내고, 이들을 메모리에서 해제하여 사용가능한 메모리 공간을
확보하는데 , 이 과정에서 가비지컬렉션이 메모리를 읽고 쓰기 때문에 일시적으로 메모리 사용량이 증가하게 된다.
수행되는 알고리즘 및 컬렉션 빈도 등에 따라 다를 수 있다. 따라서 메모리 사용량을 최소화하는 것이 중요하다.
메모리 사용량이 큰 경우, 캐시의 효율성이 저하될 수 있습니다. 캐시는 한정된 크기의 메모리를 사용하기 때문에, 캐시에 저장할 수 있는 데이터의 양이 줄어들면 캐시 히트율이 낮아질 수 있습니다. 따라서 적은 메모리를 사용하여 캐시 효율성을 높이는 것이 중요합니다.
캐시 미스(Cache Miss)가 발생할 확률이 높다.
CPU캐시는 작고 빠른 메모리이기 때문에 , 캐시에 자주 사용되는 데이터를 저장하면 빠르게 데이터를 읽어
올 수 있다.
그러나 캐시라인에 데이터가 없는 경우, 캐시 미스가 발생하면서 메모리에서 데이터를 로드해야 한다.
이때 , 메모리 사용량이 많으면 캐시미스가 발생할 확률이 높아지기 때문에 , 캐시의 효율성이 저하될 수 있다.
캐시 메모리에 원하는 데이터가 없어서 메인메모리나 보조 장치에서 해당 데이터를 가져와야 하는 상황을
말한다.
캐시는 CPU가 자주 사용되는 데이터를 저장하는 작고 빠른 메모리로, 캐시 메모리에 데이터가 있으면
CPU는 메인메모리나 보조 장치를 접근할 필요가 없어지므로 성능이 향상된다.
하지만 캐시 메모리에 데이터가 없는 경우라면
CPU는 캐시미스가 발생한것으로 판단하고, 메인메모리나 보조 저장장치에서 해당 데이터를 가져와야 합니다.
이때 데이터를 가져오는 시간이 더 길어져 성능이 저하된다.
애플리케이션이 더 많은 데이터를 처리하려면 더 많은 메모리가 필요합니다. 메모리를 최적으로 사용하지 않으면 애플리케이션의 확장성이 제한될 수 있습니다.
따라서 자바 애플리케이션을 개발할 때는 공간 복잡도를 고려하여 메모리 사용량을 최소화하고 최적화하는 것이 중요합니다.
혜원님 우연히 들어왔는데.... 오늘자 글이라니!!
전 요즘 느슨해졌는데 혜원님 벨로그 보고 저도 공부해야겠다는 생각이 드네요!!
항상 밝은 에너지로 열심히 하시는 혜원님 덕분에 저도 많이 배웁니다!!
종종 들러서 공부하고 갈게요 : >