为了账号安全,请及时绑定邮箱和手机立即绑定

java的static方法会不会造成内存负担?

java的static方法会不会造成内存负担?

DIEA 2019-05-12 12:52:31
https://www.zhihu.com/questio...这个问题下有人回答说如果是手机开发,static会构成内存负担,memoryleak隐患,尽量少用吧。但不用实例话可以直接调用有时又更方便,相对节省内存,这个就拿捏吧。。
查看完整描述

2 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

static修饰符能够与属性、方法和内部类一起使用,表示静态的。一个类中,一个static变量只会有一个内存空间,虽然有多个类实例,但这些类实例中的这个static变量会共享同一个内存空间。static的变量是在类装载的时候就会被初始化。编译的时候就会进行静态存储分配。静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间。
因此,你的static方法或者属性越多,在一开始就会分配固定的内存空间,那么大部分的内存空间分配给了static,剩下的内存空间就不多了,就会造成内存负担。
至于memoryleak隐患是另外一个话题,不是因为static变量太多造成的。
                            
查看完整回答
反对 回复 2019-05-12
?
长风秋雁

TA贡献1757条经验 获得超7个赞

这样的说法真是胡说八道。首先所有的方法本质上(底层)都是静态的,非静态方法只是多传了一个隐藏的this参数。所以任何方法不论是否静态都会占用内存空间。其次优化内存不应该关心方法,而是应该专注于对象的生存周期。
                            
查看完整回答
反对 回复 2019-05-12
  • 慕盖茨4397328
    慕盖茨4397328
    static 意思为“静态的”,可以用来修饰变量、函数、方法、class。是常驻内存的一个变量、函数、方法或者class,在调用时可直接访问。具有驻留在内存某个区域的静态属性。可共享于某一块区域供区域内的其它程序调用。 本身占用内存和其它情形无多大区别,但使用不当足可以摧毁整个系统资源,很多内存泄露就是由于static使用不当,在static中引用或者创建了其它变量或对象导致内存在不经意中不断被吞噬,直至内存空间严重导致系统内存泄漏事故发生。
  • 慕盖茨4397328
    慕盖茨4397328
    static 意思为“静态的”,可以用来修饰变量、函数、方法、class。是常驻内存的一个变量、函数、方法或者class,在调用时可直接访问。具有驻留在内存某个区域的静态属性。可共享于某一块区域供区域内的其它程序调用。 本身占用内存和其它情形无多大区别,但使用不当足可以摧毁整个系统资源,很多内存泄露就是由于static使用不当,在static中引用或者创建了其它变量或对象导致内存在不经意中不断被吞噬,直至内存空间严重导致系统内存泄漏事故发生。
  • 慕盖茨4397328
    慕盖茨4397328
    static 意思为“静态的”,可以用来修饰变量、函数、方法、class。是常驻内存的一个变量、函数、方法或者class,在调用时可直接访问。具有驻留在内存某个区域的静态属性。可共享于某一块区域供区域内的其它程序调用。 本身占用内存和其它情形无多大区别,但使用不当足可以摧毁整个系统资源,很多内存泄露就是由于static使用不当,在static中引用或者创建了其它变量或对象导致内存在不经意中不断被吞噬,直至内存空间严重导致系统内存泄漏事故发生。
点击展开后面1
  • 2 回答
  • 0 关注
  • 533 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号