Warning: Static member accessed via instance reference

Warning: Static member accessed via instance reference

在这里插入图片描述
意思是:
通过引用实例来访问静态成员×××
通过类的实例来显示静态方法和变量的引用,而不是通过类本身。

考虑到实例被回收,我们可以通过类本身来调用静态方法,如:

//将此处原:
MartDemo md = new MartDemo();
MartDemo.add(50000);
//改为:
MartDemo.add(50000);
//因为此处在同一个类中,故可省去类名,改为:
add(50000);

因为内存有限,所以我们要在不断分配内存空间的同时进行回收,如果不进行垃圾回收,内存迟早都会被消耗空。

垃圾回收可以分为实例的垃圾回收(堆中的对象)以及类的垃圾回收(类卸载,发生在方法区)
类实例的垃圾回收:
根据引用计数算法可达性算法,判断对象实例死亡后,进行回收。引用计数为0的对象可被回收,但两个对象出现循环引用的情况下,此时引用计数器永远不为0,导致无法对它们进行回收,所以因为循环引用的存在,Java 虚拟机不适用引用计数算法;而可达性算法中的不可达对象并不是立即死亡的,对象拥有一次自我拯救的机会。
类的垃圾回收:
同时满足下面3个条件类为无用的类:
1、该类所有的实例都已经被回收,也就是 Java 堆中不存在该类的任何实例。
2、加载该类的 ClassLoader 已经被回收。
3、该类对应的 java.lang.Class 对象没有在任何地⽅被引⽤,⽆法在任何地⽅通过反射访问该类的⽅法。
Jvm可以对满足以上3个条件的无用类进行回收,“可以”进行回收,但不一定会回收,嘶……

总之,从上可知类的回收是在实例回收的基础之上的,实例被回收了,类不一定被回收了,所以用类本身调用静态方法更合适。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值