问题描述
我的理解是这样的,静态变量的引用将一直在stack中,所以该引用对应的heap里的对象不会回收。那么1.类的静态变量生命周期是从加载该类开始到程序停止?2.在内存吃紧情况下会不会被回收?具体业务是我想实现这样的功能,将常用&&数据量不大&&数据不经常改动 的数据在程序启动时加载到内存(放到静态变量Map里面),更新删除数据库数据时同时更新内存,程序访问数据访问内存,不访问数据库。请问这样是否合理?有没有更好地办法?请各路大神指教 谢谢!
解决方案
你的做法是可以的,没有问题。 如果你了解redis或者memcache的话可以用这些代替直接放入jvm内存,当然不用这些也ok
解决方案二:
1.类的静态变量生命周期是从加载该类开始到程序停止? 是类被加载时开始 类被卸载时停止2.在内存吃紧情况下会不会被回收? 不会 但 interned String会被回收掉一些不过 java 8的Hotspot JVM实现中似乎会移除掉永久代 将类的元数据放在本地内存 将类的静态变量和interned String 放在java 堆中具体可以看看这个: http://openjdk.java.net/jeps/122
时间: 2024-12-06 04:12:02