많은 데이터가있는 변수를 사용했습니다 String data
. 이 문자열의 작은 부분을 다음과 같은 방식으로 사용하고 싶었습니다.
this.smallpart = data.substring(12,18);
몇 시간의 디버깅 (메모리 시각화 도구 사용) 후에는 객체 필드 에 하위 문자열 만 포함되어 있지만 객체 필드의 smallpart
모든 데이터를 기억 한다는 것을 알았습니다 data
.
코드를 다음과 같이 변경했을 때 :
this.smallpart = data.substring(12,18)+"";
.. 문제가 해결되었습니다! 이제 내 응용 프로그램은 메모리를 거의 사용하지 않습니다!
어떻게 가능합니까? 누구든지 이것을 설명 할 수 있습니까? 작은 부분은 계속 데이터를 참조한다고 생각하지만 왜 그럴까요?
업데이트 : 큰 문자열을 지우려면 어떻게해야합니까? data = new String (data.substring (0,100))이 작동합니까?
new String(String)
. stackoverflow.com/a/390854/8946을 참조하십시오 .