聊一聊static以及回收机制吧
static 见名思意,静态的。加了static的都被定义为全局变量,已经脱离了对象的区域,所以不是对象独有的,而是一个对象的引用,也就是说所有对象共同享有这个变量;并且static变量会在类初始化的时候初始化。
关于static变量的回收?static为对象的引用,变量为静态存储,对象会被回收,但是static的变量不会被回收,知道jvm终止。
之前生产环境中有个接口到点会存在一定量的并发,返回的数据包也稍大,到点会造成oom,同一时间内大量调用造成垃圾不能及时回收造成,可以通过限流解决;或者请求打散。当然了垃圾回收不是执行完方法立即回收,要有空闲线程的时候,还有当分配内存heap满的时候会及时回收,但是此时程序会变得很慢,非常不建议这样的操作。
首先判断什么样的对象会被回收,有5种情况:
1,对象没有引用
2,作用域发生未捕获异常
3,程序在作用域正常执行完毕
4,程序执行了System.exit()
5,程序发生意外终止(被杀进程等)
0条评论