2012-02-26 10 views
1

데이터를 바이트 배열로 보내는 장치에 블루투스 연결이 있습니다. 바이트 배열은 새로운 String (byte [], offset, bytecount)을 가진 문자열로 변경됩니다. 문제는 데이터가 수백 번 및 수백 번 수신되고 가비지 수집이 약 1000 개의 루프 후에 메모리 바이트 할당 오류가 발생하여 작업을 수행하지 않는 것처럼 보입니다. 루프가 증가함에 따라 앱이 점점 더 뒤쳐지기 시작합니다.Android : 너무 많은 객체

더 나은 아직 또는 사용 직후 새 문자열 객체의 메모리를 해제 할 수있는 방법이 있나요,를 새로 만들지 않고 문자열 또는 float로 바이트 배열을 변경하는 방법은 무엇입니까 목적?

오류가 발생하면 훨씬 많은 메모리를 앱에 제공 할 수있는 방법이 있습니까?

+0

코드 부분에 루프를 붙이시겠습니까? – Yury

답변

0

char[]으로 데이터를 읽고 더 많은 데이터를 읽을 때 해당 배열을 다시 사용하면 매우 작은 메모리 사용량을 갖게됩니다.

또한이 페이지를 확인하십시오 : http://www.javamex.com/tutorials/memory/string_memory_usage.shtml

+0

바이트 [] 대신 char []을 사용하십시오. 그러나 오프셋과 바이트 수는 어떻게됩니까? String에 char []가 중요하지 않습니까? – user1233402

+0

byte [] 또는 char []를 사용하는 것이 중요하지 않다고 생각합니다. 실제로 InputStreamReader를 생각하고 있는데, char []에 출력 할 수 있습니다. http://docs.oracle.com/javase/1.4.2/docs/api/java/io/InputStreamReader.html#read (char [], % 20int, % 20int). 오프셋과 바이트 수를 지정합니다. 네가 묻고있는거야? – Macondo2Seattle

+0

하하 나는 솔직히 내 질문을하는 법을 모른다. 유용한 정보를 얻으려면 String으로 변경해야하는 수백 바이트의 []가 생기고 새로운 객체를 만들지 않고 그것을하고 싶습니다. InputStreamReader를 byte []와 함께 사용하고 offset()과 offset()을 read (char [], offset, bytecount)로 설정하여 char []를 얻으시겠습니까? – user1233402