2015-01-22 3 views
0

substring 메서드는 어떻게 내부적으로 작동하며 어떻게 메모리 문제를 만들 수 있습니까?부분 문자열의 메모리 문제

어떻게 해결할 수 있습니까?

+1

왜냐하면'substring'은 새로운 문자열을 반환하고 당신이 무엇을 요구하고 있는지 불분명하기 때문에 질문 할 때 더 많은 노력을 기울이십시오. – Maroun

+1

그래서 어떤 종류의 메모리 문제가보고됩니까? –

+0

여기를보십시오. http://www.programcreek.com/2013/09/the-substring-method-in-jdk-6-and-jdk-7/ 자바에서는 <7에서 더 많은 메모리가 할당 된 상황이있을 수 있습니다. 애플리케이션 로직 관점. – SubOptimal

답변

1

Java 7 우분 6 이전에는 substring보기 원래 문자열에 반환하는 데 사용됩니다. 첫 번째 문자에만 관심이 있었기 때문에 1,000,000 자의 문자열이 있고 s.substring(0, 1)이라고 상상해보십시오. 원래 문자열은 메모리에 남았을 것입니다.

Java 7u6 substring은 해당 문제를 방지하는 새로운 문자열을 반환하므로.

+1

물론 300 개 뷰가 필요하면 1,000,000 개의 문자 중 10 만 개가 새로 출시되면 슬프게 느껴질 수 있습니다. 모두를 행복하게 만들 수는 없습니다 ... – Thilo

+0

실제로 @Thilo ... – assylias

+0

@assylias : 정확히 내가 알고 싶은 것입니다. 어떻게 그들은 다음 버전에서 불필요한 메모리 할당을 해결 했습니까 –