haha7840
2013-11-28 10:30
浏览 236
已采纳

生命周期问题

我的理解是这样的,静态变量的引用将一直在stack中,所以该引用对应的heap里的对象不会回收。
那么
1.类的静态变量生命周期是从加载该类开始到程序停止?
2.在内存吃紧情况下会不会被回收?

具体业务是我想实现这样的功能,将常用&&数据量不大&&数据不经常改动 的数据在程序启动时加载到内存(放到静态变量Map里面),更新删除数据库数据时同时更新内存,程序访问数据访问内存,不访问数据库。
请问这样是否合理?有没有更好地办法?

请各路大神指教 谢谢!

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • tianchao_ 2013-11-28 10:37
    已采纳

    你的做法是可以的,没有问题。

    如果你了解redis或者memcache的话可以用这些代替直接放入jvm内存,当然不用这些也ok

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • fairjm 2013-11-28 10:44

    1.类的静态变量生命周期是从加载该类开始到程序停止?
    是类被加载时开始 类被卸载时停止
    2.在内存吃紧情况下会不会被回收?
    不会 但 interned String会被回收掉一些

    不过 java 8的Hotspot JVM实现中似乎会移除掉永久代 将类的元数据放在本地内存 将类的静态变量和interned String 放在java 堆中
    具体可以看看这个:
    http://openjdk.java.net/jeps/122

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题