我创建了一个始终在后台运行的服务-它永远不会脱机。

对于我插入服务的每个较小模块,我有点担心我需要使用静态变量。由于父服务始终处于正常运行状态(假设它永远不会停止运行-完美的情况),因此静态成员是否会随时间占用大量堆内存?最终会导致我的服务崩溃吗?

据我所知,静态变量一直持续到程序终止-在这种情况下永远不会!

有没有解决方法?我可以以某种方式调用我的独立模块,而不考虑静态变量使用的内存吗?它们有任何方式可以独立运行,并且最终不会杀死我的JVM或服务吗?

PS-我认为我无法消除静态成员,我需要知道是否存在使用静态成员并且不浪费大量内存的有效方法。

最佳答案

我认为静态数据成员不是这里的问题。这只是要考虑的OOP设计方面,但与您的内存问题无关。

您应该首先估算程序所需的内存大小,然后确定您是否真的希望在应用程序的生存期内将所有这些数据保留在主内存中。该分析的可能结果可能是:


必须保留数据并将其放入内存-相应地配置-Xmx标志并测试您的假设。
必须保留数据,并且空间不足-考虑使用持久性(例如DB)
数据并不一定要保留-考虑使用有界缓存,其中淘汰了旧的/无关的数据项。

关于java - 静态变量:如何回收内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16353406/

10-12 00:34
查看更多