http://blog.renren.com/share/255779146/793210475
总结:大家对这个问题都有一个共识:那就是实例化方法更多被使用和稳妥,静态方法少使用。
有时候我们对静态方法和实例化方法会有一些误解。
1、大家都以为“ 静态方法常驻内存,实例方法不是,所以静态方法效率高但占内存。”
事实上,他们都是一样的,在加载时机和占用内存上,静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别。
2、大家都以为“ 静态方法在堆上分配内存,实例方法在堆栈上”
事实上所有的方法都不可能在堆或者堆栈上分配内存,方法作为代码是被加载到特殊的代码内存区域,这个内存区域是不可写的。
方法占不占用更多内存,和它是不是static没什么关系。因为字段是用来存储每个实例对象的信息的,所以字段会占有内存,并且因为每个实例对象的状态都不一致(至少不能认为它们是一致的),所以每个实例对象的所有字段都会在内存中有一分拷贝,也因为这样你才能用它们来区分你现在操作的是哪个对象。
但方法不一样,不论有多少个实例对象,它的方法的代码都是一样的,所以只要有一份代码就够了。