2012-01-22 4 views
0

저는 메모리 사용량이 너무 빨리 변하는 것이 정상적인 것인지 궁금합니다.메모리 사용량이 매우 빠르게 변경됩니다. 정상입니까?

나는 이것을 실행한다 code 그것은 간단한 게임 만드는 법을 배우는 튜토리얼이다.

나는 게임의 메인 루프에서 일부 코드를 추가 : RAM 사용량이 매우 빠르게 25 ~ 30 등 사이의 변화

g.setColor(Color.cyan); 
g.drawString(System.currentTimeMillis() + "\n\n/nRAM:[" + (runtime.totalMemory() - runtime.freeMemory())/1024/1024 + " MB]", 100, 100); 

,

내 질문은 그런 일이 왜입니까? 그것은 잘못된 행동입니까 아니면 중요하지 않습니까? 코드가 잘못 쓰여졌습니까?

EDIT : 예를 들어이 video 메모리 사용량이 안정적이기 때문에 의심 스럽습니다. 또한 brackeen 게임은 사운드 중지가 재생 될 때까지 동일한 사용량 (25MB)을 사용합니다.

+1

컴퓨터가 정말 빠릅니다. 오랜 시간 동안 추세가 없다면 걱정하지 마십시오. –

+0

아니요. 잘못이 아니에요. 엄청난 증가, 아무 것도 남기지 않고 항상 올라간다는 것은 잘못된 것입니다. –

답변

3

Java에서 메모리 관리는 가비지 수집기에서 자동으로 처리됩니다. 따라서 객체가 더 이상 필요하지 않으면 (아무런 참조가 남아 있지 않은 경우) 즉시 free'd가 아니라 메모리에 남아있게됩니다. JVM 설정, 최대 힙 크기 등과 같은 여러 요소에 따라 가비지 수집은 필요에 따라 객체를 시작하고 제거합니다. 이것은 모든 프레임에서 발생하지 않으므로 메모리 사용량이 등반하는 것을 확인한 다음 가비지 수집이 발생할 때 갑자기 줄어 들었습니다.

1

가비지를 많이 생성하면 초당 500MB 이상을 생성하는 것을 볼 수 있습니다.

메모리 프로파일 러를 사용하는 경우 메모리 소비를 줄일 수 있으며 실행중인 프로그램의 경우 분당 1MB 미만으로 떨어질 수 있습니다.

+0

그래,하지만 'Basic game tutorial'이라는 코드를 사용하면 막대한 누출이 없음을 보증해야합니다./ – Ilion

+0

가비지 생성은 메모리 누수 (복구 할 수없는 메모리)와 다릅니다. –

관련 문제