iamgus   2년 전

소스에서 할당한 변수도 별로없고 계산도 많지않은데 128mb를 초과해서 메모리초과가 떠요 어떤 이유로 메모리초과가 뜨나요?

dldyddlwl   2년 전

흔히 자바의 string 객체가 불변 개체라고 합니다. 즉, 값만 변경하는 것이 불가능하다는 거죠.

즉, b = Integer.toString(check); 이 과정에서 String이 계속 만들어지면서 새로운 공간을 차지하기 때문에 메모리가 초과될 수 있습니다.

xowns0537   1년 전

저는 String.valueOf 썻는데 정답 처리 되더라구요..

dldyddlwl   1년 전

우선, 댓글 달아주셔서 감사합니다!

맨 위에 있는 질문자님의 코드의 경우에는 18번 라인에서 볼 수 있듯이 substring을 호출하고 있습니다.

substring 함수 또한 위와 마찬가지로, String을 리턴하므로, 메모리 초과의 원인이 될 수 있습니다.

댓글을 달아주신 분의 경우에는 이러한 substring의 부분이 배열의 인덱스로서 처리되었기 때문에 메모리가 초과되지 않을 수 있었습니다!

알려주셔서 감사합니당!!

댓글을 작성하려면 로그인해야 합니다.