List와 배열이 차지하는 바이트 수

1331 단어 memcachedOSBlog
List가 서열화된 후 몇 바이트를 차지하는지 보고 싶은데, 테스트 프로그램은 다음과 같습니다.
	public static void main(String[] args) throws IOException{
		int n = 2000;
		List<Integer> list = new LinkedList<Integer>();
		for (int i = 0; i < n; i++) {
			list.add(i);
		}
		System.out.println("   :" + list.size());
		
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		ObjectOutputStream os = new ObjectOutputStream(baos);
		
		os.writeObject(list);
		os.close();
		
		
		System.out.println("   :" + baos.size());
		baos.close();
	}

결과 출력:
원소수: 0
바이트: 48
원소수: 1
바이트: 125
원소수: 2
바이트: 135
원소수: 3
바이트: 145
원소수:2000
바이트: 20115
한 요소를 초과한 후 하나씩 증가할 때마다 10바이트가 증가하는 것을 알 수 있다. 간단하게 각 성형이 10바이트를 차지하는 것으로 이해할 수 있다.
==============================
같은 프로그램을 int[]로 바꾸면 성형수 그룹 테스트 결과는 다음과 같다.
원소수: 0
바이트 수: 27
원소수: 1
바이트: 31
원소수: 2
바이트: 35
원소수: 3
바이트: 39
원소수:2000
바이트: 8027
요소당 4바이트
===========================
int[]가List보다 메모리를 많이 절약한 것을 알 수 있습니다. 2.5배는 안 돼요.
memcached로 캐시를 하면...
수조를 사용하는 것은 비교적 수지가 맞는데, 아쉽게도 수조는 동태적으로 변화할 수 없다
또는'1 # 2 # 3 # 4'와 같은 문자열을 사용할 수 있습니다.

좋은 웹페이지 즐겨찾기