静态方法、实例化方法与线程安全
静态方法与实例化方法
大家在使用 Java 的时候,一定都有一个共识,少使用静态方法,要多使用实例化方法,这样会更稳妥。
首先,先来澄清一下对静态方法和实例化方法的误解:
1、静态方法常驻内存,实例方法不是
事实上,静态方法和实例方法都是在第一次被调用时被加载,在加载时机和占用内存上是一样的。
2、静态方法分配在堆上,实例化方法分配在堆栈上
事实上,所有方法都不会在堆栈上分配内存。字段是用来存储每个实例对象的信息的,所以字段会占用内存,每个实例对象都会在内存中有一份所有字段的拷贝。但方法不一样,无论有多少个实例对象,它的方法的代码都是一样的。因此无论是 static 还是 non-static 方法,都只存在一份代码,也只占用一份内存。
从编程思想上,单例的出现并不是为了解决什么高深复杂的性能之类的问题,它只是面向对象的一种体现,可以继承拓展,可以实现接口,比较灵活。静态类更像是一个方法的集合,提供全局的访问而已, 比如大多数的 Util。
This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content