2014-12-26 8 views
0

현재 연결된 타일 맵에서 데이터를 렌더링하기 위해 연결된 해시 맵을 사용하는 2D 자바 게임을하고 있습니다. 이 클래스뿐만 아니라지도 렌더링에 사용되는 다른 비 일시적인 개체를 포함하는 클래스 개체를 serialize 할 때 출력되는 파일의 크기는 4kb입니다. 나의 이해에 RAM 사용법은 무엇이든 읽혀지고있는 크기에 달렸지 만, 분명히 크기가 4kb 미만인 파일에서 내 메모리 읽기의 최대 20 %를 사용하고 있습니다. 이것은 내가 RAM이 작동하는 방식에 대한 나의 이해가 잘못되었다거나 나에게 나쁜 RAM 판독 값을주는 것을 놓치고 있다고 믿게한다. RAM 분석자바 램 사용 불일치

방법

usedPercent = (double) (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())/Runtime.getRuntime().maxMemory(); 

답변

4

누락 된 부분은 자바 런타임 환경은 자체 관리 메모리를 잡고이 클래스 경로로드, 인턴 캐시, 프로세스 공간을 포함하고 있다는 것입니다 스택 및 힙 및 permgen 공간.

기본적으로 Java 개발자는 메모리 관리를 담당하지 않으며 Java는 메모리 관리를 수행 할 수있는 도구를 제공하지 않습니다.

+0

출력 파일이 너무 작아서 뭔가 올바르게 작업하고 있다는 의미이며 화면 메모리 출력이 10-20 %로 다양하다는 사실을 무시해야합니다. 또는 직렬화 또는 무언가 동안 파일 압축과 관련이 있습니까? – StoneAgeCoder

+1

메모리 사용량이 파일 크기와 관련이 없다고 말하면 JVM은 그 자체로 동적입니다. 중요한 점은 인스턴스가 초기 값으로 비 직렬화되었는지 확인하는 것입니다. –

+1

@ElliottFrisch - JVM에서 제공하는 메모리 사용 통계를 은행에 실제로 적용하는 것이 맞는지 궁금합니다. – TheLostMind