gpt4 book ai didi

Java 堆间接访问

转载 作者:行者123 更新时间:2023-11-29 06:22:38 25 4
gpt4 key购买 nike

目前我使用 HashMap<Class, Set<Entry>> ,其中可能包含数百万个短生命周期和长生命周期的对象。 (Entry 是围绕 Object 和一个整数的包装类,这是一个重复计数)。

我想:这些Object s 都存储在 JVM 的 Heap 中。然后我的问题浮现在我的脑海中;而不是为 HashMap 分配大量内存, 是否可以做得更好(更少的内存消耗)?

有没有办法访问Object基于 Class 间接在 Java 堆中的 s的 Object s?

“间接”的意思是:没有指向 Object 的指针. “访问”的意思是:检索指向 Object 的指针在堆中。

最佳答案

我不太明白你的代码的用途,但我担心你的代码涉及一些频繁的 OutOfMemoryError,不是吗?

无论如何。

您可以获得对不会阻止这些对象被垃圾回收的对象的引用,例如 SoftReference(执行 myObj = thisObj; 时使用的默认对象)、WeakReference 和 PhantomReference。

因此,您可以(实际上应该使用 Wea​​kReference 让 GC 完成它的工作)。然而,对于动态内存探索,已经存在应用程序,例如 VisualVM ,它使用允许外部进程查询 VM 的协议(protocol):JVMPI .

我认为你真的应该看看这个。

关于Java 堆间接访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2426160/

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