用java分析hash表结构及性能(三)

 貌似前面一篇的存储空间的测试木有弄上来。。。这里在把代码附上吧:

package cn.java1118;

public class TestMemory {
	
	public static void main(String[] args) {
		
		System.out.println("刚开始时----虚拟机上空闲的内存量为:"+Runtime.getRuntime().freeMemory());
		System.out.println("刚开始时----虚拟机上内存总量为:"+Runtime.getRuntime().totalMemory());
		System.out.println("刚开始时----虚拟机试图使用的最大内存量为:"+Runtime.getRuntime().maxMemory());
		//调用完一个hashmap之后
		MyHashMap04<String, String> map = new MyHashMap04<String, String>();
		for(int i=0;i<1000000;i++){  
	        map.add(""+i, ""+i*100);  
	        }
		System.out.println("调用了hashmap之后----虚拟机上空闲的内存量为:"+Runtime.getRuntime().freeMemory());
		System.out.println("调用了hashmap之后----虚拟机上内存总量为:"+Runtime.getRuntime().totalMemory());
		System.out.println("调用了hashmap之后----虚拟机试图使用的最大内存量为:"+Runtime.getRuntime().maxMemory());
		//开辟同样大的数组空间之后
//		String[] aaa = new String[1000000];
//		 for (int i = 0; i < 1000000; i++) {
//			    aaa[i] = new String("aaa");
//			 }
//		System.out.println("调用数组之后----虚拟机上空闲的内存量为:"+Runtime.getRuntime().freeMemory());
//		System.out.println("调用数组之后----虚拟机上内存总量为:"+Runtime.getRuntime().totalMemory());
//		System.out.println("调用数组之后----虚拟机试图使用的最大内存量为:"+Runtime.getRuntime().maxMemory());
	}

}

 

刚开始时----虚拟机上空闲的内存量为:4868664

刚开始时----虚拟机上内存总量为:5177344

刚开始时----虚拟机试图使用的最大内存量为:832438272

调用数组之后----虚拟机上空闲的内存量为:16260656

调用数组之后----虚拟机上内存总量为:44433408

调用数组之后----虚拟机试图使用的最大内存量为:832438272

刚开始时----虚拟机上空闲的内存量为:4905008

刚开始时----虚拟机上内存总量为:5177344

刚开始时----虚拟机试图使用的最大内存量为:832438272

调用了hashmap之后----虚拟机上空闲的内存量为:69518912

调用了hashmap之后----虚拟机上内存总量为:169803776

调用了hashmap之后----虚拟机试图使用的最大内存量为:832438272

这是我测试了几次的效果。。。每次测试的时候都是使用hashmap比数组所余下的空间要大一些,为了试验的准确性,我是顺者测,逆着测,重启eclipse测,开机重启测。。。各种测啊。。。结果都差不多。。。终于搞定了!!!!!

 

 

但我发现了,我的代码还得大大修改。。。暂时先这样吧。。。

<!--EndFragment-->

你可能感兴趣的:(hash表)