gpt4 book ai didi

java - 静态变量: How to reclaim memory?

转载 作者:行者123 更新时间:2023-12-01 14:37:23 24 4
gpt4 key购买 nike

我创建了一个在后台持续运行的服务 - 它永远不应该离线。

对于插入服务的每个较小模块,我有点担心需要使用的静态变量。由于父服务始终启动并运行(假设它永远不会宕机 - 完美的场景),静态成员不会随着时间的推移占用大量堆内存吗?它最终会导致我的服务崩溃吗?

据我所知,静态变量一直持续到程序终止 - 在本例中永远不会!!

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

PS - 我认为我无法取消静态成员,我需要知道是否有一些有效的方法来使用静态成员而不浪费大量内存。

最佳答案

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

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

  1. 数据必须保留,并且适合内存 - 相应地配置您的 -Xmx 标志并测试您的假设。
  2. 数据必须保留,但空间不足 - 考虑使用持久性(例如 DB)
  3. 数据实际上并不需要保留 - 考虑使用有界缓存,其中旧的/不相关的数据项将被逐出。

关于java - 静态变量: How to reclaim memory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16353406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com