https://www.zhihu.com/questio...
这个问题下有人回答说
如果是手机开发, static 会构成内存负担,memory leak 隐患,尽量少用吧。但不用实例话可以直接调用有时又更方便,相对节省内存,这个就拿捏吧。。
https://www.zhihu.com/questio...
这个问题下有人回答说
如果是手机开发, static 会构成内存负担,memory leak 隐患,尽量少用吧。但不用实例话可以直接调用有时又更方便,相对节省内存,这个就拿捏吧。。
static修饰符能够与属性、方法和内部类一起使用,表示静态的。
一个类中,一个static变量只会有一个内存空间,虽然有多个类实例,但这些类实例中的这个static变量会共享同一个内存空间。
static的变量是在类装载的时候就会被初始化。编译的时候就会进行静态存储分配。
静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间。
因此,你的static方法或者属性越多,在一开始就会分配固定的内存空间,那么大部分的内存空间分配给了static,剩下的内存空间就不多了,就会造成内存负担。
至于memory leak隐患是另外一个话题,不是因为static变量太多造成的。
8 回答6.4k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
这样的说法真是胡说八道。首先所有的方法本质上(底层)都是静态的,非静态方法只是多传了一个隐藏的 this 参数。所以任何方法不论是否静态都会占用内存空间。其次优化内存不应该关心方法,而是应该专注于对象的生存周期。