做地方特产的网站来推网站

张小明 2026/1/16 10:06:45
做地方特产的网站,来推网站,福州公司建站模板,绍兴网络推广公司一、什么是 WeakHashMap#xff1f;WeakHashMapK, V 是 Java 标准库#xff08;java.util 包#xff09;中的一种特殊 Map 实现。它的核心特性是#xff1a;键#xff08;Key#xff09;被包装为弱引用#xff08;WeakReference#xff09;#xff0c;当某个键…一、什么是 WeakHashMapWeakHashMapK, V是 Java 标准库java.util包中的一种特殊Map实现。它的核心特性是键Key被包装为弱引用WeakReference当某个键对象不再被任何强引用持有时即使它还在WeakHashMap中也会在下一次垃圾回收GC时被自动移除。这使得WeakHashMap成为一种自动清理的 Map非常适合用于缓存或元数据映射等场景。二、WeakHashMap 的基本使用示例代码观察自动清理行为import java.util.WeakHashMap; public class WeakHashMapDemo { public static void main(String[] args) { WeakHashMapKey, String map new WeakHashMap(); Key key new Key(obj1); map.put(key, value1); System.out.println(Before GC: map.size()); // 输出 1 key null; // 移除唯一强引用 // 建议触发 GC不保证立即执行 System.gc(); try { Thread.sleep(100); } catch (InterruptedException e) {} // 调用 size() 会触发 expungeStaleEntries() System.out.println(After GC: map.size()); // 通常输出 0 } static class Key { private final String name; public Key(String name) { this.name name; } Override public String toString() { return name; } } }⚠️ 注意System.gc()只是建议 JVM 执行 GC实际是否回收取决于 JVM 实现和运行时状态。但只要 GC 发生且 key 无强引用条目就会被清除。三、适用场景Where to Use✅ 推荐场景对象元数据缓存Metadata Cache例如为每个对象关联一个调试信息、监听器列表、临时配置等但不希望这些元数据阻止对象被回收。避免内存泄漏的监听器注册表在事件驱动系统中若监听器未显式注销可能造成内存泄漏。使用WeakHashMapListener, ?可让监听器在无其他引用时自动移除。ClassLoader 或 Class 相关的缓存比如动态代理类、反射元数据缓存等避免因缓存导致 ClassLoader 无法卸载。❌ 不适合场景需要长期保留数据的缓存如用户会话、热点数据→ 应使用SoftReference软引用或成熟缓存框架如 Caffeine、Guava Cache。键是基本类型包装类如Integer,String且来自常量池 → 因为它们可能被 JVM 强引用如字符串字面量导致无法回收。四、WeakHashMap 的优缺点优点缺点✅ 自动清理无用条目防止内存泄漏❌ 条目可能随时消失不适合需要稳定存储的场景✅ 与 GC 协同工作无需手动管理❌ 清理时机不可控依赖 GC✅ 内存友好适合辅助性缓存❌ 性能略低于 HashMap每次操作需清理 stale entries✅ 线程不安全与 HashMap 一致❌ 不支持 null key因为WeakReference(null)无意义补充WeakHashMap不允许null作为 key但允许null作为 value。五、底层原理How It Works1. 弱引用WeakReferenceWeakHashMap内部使用WeakReference包装每个 keyprivate static class EntryK,V extends WeakReferenceObject implements Map.EntryK,V { V value; // ... }当 key 对象仅被WeakReference引用时JVM 认为其“可回收”。GC 时JVM 会将该WeakReference加入其关联的ReferenceQueue。2. ReferenceQueue 机制WeakHashMap构造时会创建一个ReferenceQueueprivate final ReferenceQueueObject queue new ReferenceQueue();当 key 被 GC 回收后对应的Entry会被放入此队列。WeakHashMap在每次访问get/put/size 等时会调用expungeStaleEntries()方法遍历队列并删除已失效的条目。这就是为什么map.size()在 GC 后返回 0 —— 因为size()触发了清理。3. 清理不是实时的⚠️关键点WeakHashMap不会在 GC 后立即清理而是在下次调用其方法时才清理。因此如果长时间不访问 mapstale entries 会堆积但不占用 key 对象内存只占 Entry 对象内存。它不是“实时缓存”而是“懒清理”。六、与 JVM 的关系WeakHashMap的行为高度依赖 JVM 的垃圾回收机制和引用类型语义引用类型是否阻止 GCWeakHashMap 使用强引用Strong✅ 是不使用软引用Soft✅直到内存不足SoftReference用于内存敏感缓存弱引用Weak❌ 否WeakHashMap 的 key虚引用Phantom❌ 否用于跟踪对象回收不用于 Map因此WeakHashMap的“自动清理”能力完全由 JVM 的 GC 决定属于JVM 与 Java 语言协同设计的典型范例。七、生产环境是否使用如何使用✅生产环境可以使用但需谨慎正确使用姿势明确目的仅用于“辅助性、可丢失”的元数据映射。避免依赖清理时机不要假设条目何时消失。不要用于主业务数据存储。注意 key 的生命周期确保 key 确实会变成“仅被 WeakHashMap 引用”。生产级示例监听器注册表防内存泄漏import java.util.*; public class EventManager { // 使用 WeakHashMap 避免监听器泄漏 private final MapListener, Boolean listeners new WeakHashMap(); public void addListener(Listener listener) { listeners.put(listener, Boolean.TRUE); } public void fireEvent(String event) { // 清理 stale entries 并通知有效监听器 for (Listener l : new ArrayList(listeners.keySet())) { if (l ! null) { l.onEvent(event); } } } interface Listener { void onEvent(String event); } }即使调用方忘记removeListener只要监听器对象无其他强引用就会被自动清理。八、替代方案对比方案特点适用场景WeakHashMapkey 弱引用GC 后自动移除元数据、监听器、临时关联SoftReference Mapkey 软引用内存不足时才回收内存敏感缓存如图片缓存Guava Cache / Caffeine支持 LRU、TTL、软/弱引用等通用缓存功能强大IdentityHashMap基于 比较特殊场景如防止重写 equals 的干扰一般建议除非明确需要弱引用语义否则优先使用成熟缓存框架。九、总结维度说明本质key 为弱引用的 Map核心机制依赖 JVM GC ReferenceQueue自动清理在下次访问时触发懒清理线程安全❌ 不安全需外部同步生产可用✅ 但仅限特定场景元数据、防泄漏与 JVM 关系深度依赖 GC 行为和引用语义一句话口诀“WeakHashMap 存的是‘影子’主身一走影子就散。”
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

多个域名绑定同一网站数据库网站建设方案

LangFlow多模态AI应用构建实例:图像文本联合处理 在智能客服系统中,用户上传一张打印机故障照片并附上“屏幕显示E102”的描述。传统NLP模型只能处理文字,而人类专家一眼就能结合图像和文本判断问题——那么,我们能否让AI也具备这…

张小明 2026/1/10 9:39:54 网站建设

微信小程序做网站上海广告公司工资

想要在普通电脑上运行大语言模型吗?通过CPU大模型部署和量化优化技术,即使是低配置设备也能实现流畅的本地AI推理体验。本文将为你揭秘如何在个人电脑上轻松部署AI助手,无需昂贵的专业硬件,让AI技术真正触手可及!&…

张小明 2026/1/10 9:41:48 网站建设

手表网站建设规划书北京网站建公司新闻

最近刷 GitHub 时刷到一个挺有意思的开源项目:Happy LLM它在GitHub上十分火热,已经收获13.8k⭐。 它是 Datawhale 出品的,教你从0搭建一个215M的大模型!这套 LLM 学习材料啊,是从自然语言处理的基础知识开始讲的。之后…

张小明 2026/1/13 22:20:53 网站建设

做个营销型网站要多少钱如何成为电商

一、为什么我的论文总被标"AI生成"?你是不是也遇到这些崩溃瞬间... "明明自己改了三遍,维普查重还是显示AIGC率35%..." "导师指着查重报告问:这段是不是ChatGPT写的?" "答辩在即,…

张小明 2026/1/10 9:40:00 网站建设

义乌网站1688货源网官方网站

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个快速原型测试平台,允许用户:1. 输入可能导致Runtime Error 217的代码片段;2. 选择不同的运行环境配置;3. 一键测试多种修复方…

张小明 2026/1/10 9:39:58 网站建设

建材建设行业网站济南抖音推广公司

3D打印技术参考注意到,瑞典高端技术与防务集团Saab AB与美国增材制造创新公司Divergent Technologies,于12月10日宣布成功采用3D打印技术制造出长达5米的一体式无人机机身。该结构完全没有使用模具和铆钉,是当前人类构建的最大的3D打印动力飞…

张小明 2026/1/10 9:39:59 网站建设