자바에서 문자열인 s1이랑 s2를 합쳐서 s3를 만들면 저렇게 s3는 메모리상에서 다른 공간에 메모리공간을 차지한대
그래서 StringBuffer나StringBuilder를 사용해서 s1의 메모리를 이동하지 않고 s1의 영역을 늘리는게 정석이라고 배웠고 아무생각없이 쓰고 있었거든
근데 갑자기 문득 궁금해지는게 두번째 짤처럼 문자열인 s1의 메모리 공간을 늘리려는데 정수형 메모리가 차지하고 있으면 어떻게 되노?
물론 컴파일러나 오에스가 알아서 잘해주겠지만 저런일이 만약 실제로 어떻게 되는지 메모리관점에서 어떻게 되노?
그래서 StringBuffer나StringBuilder를 사용해서 s1의 메모리를 이동하지 않고 s1의 영역을 늘리는게 정석이라고 배웠고 아무생각없이 쓰고 있었거든
근데 갑자기 문득 궁금해지는게 두번째 짤처럼 문자열인 s1의 메모리 공간을 늘리려는데 정수형 메모리가 차지하고 있으면 어떻게 되노?
물론 컴파일러나 오에스가 알아서 잘해주겠지만 저런일이 만약 실제로 어떻게 되는지 메모리관점에서 어떻게 되노?
챗티한테 물어보그라 아그야 ㅋㅋㅋ
자바에서 StringBuffer가 문자열을 늘릴 때, 메모리 관리는 동적으로 이루어집니다. 초기에는 일정한 크기의 버퍼가 할당됩니다. 만약 문자열을 추가하는 과정에서 현재 버퍼 크기가 부족하면, 새로운 더 큰 버퍼가 할당됩니다. 기존 문자열은 새 버퍼로 복사되고, 새로운 공간에 추가적인 문자열이 이어집니다. 이렇게 하면 메모리 재할당이 자주 일어나지 않도록 최적화할 수 있습니다. 이후, 사용되지 않는 메모리는 가비지 컬렉터에 의해 회수됩니다.
와 고맙다 이기 그럼 문자열 더하기는 삭제가 안된다는 거로구만