gpt4 book ai didi

java - 告诉 JVM 使用了多少 native 内存

转载 作者:行者123 更新时间:2023-11-30 04:39:09 25 4
gpt4 key购买 nike

我的问题与 Java-Native-Code-Background 密切相关:

You cannot control native memory from Java really well. You might haveheard about native buffers, but what they haven’t told you is thatJava doesn’t properly garbage native buffers. The problem is that Javadoesn’t take the size of the native buffers into account, meaning thatit will at some point free a native buffer, but if you have reallymany of those, then it probably won’t be before you run out of memory.This means that all data has to be stored in Java objects.

因此,是否有可能以某种方式告诉或注册所使用的 native 内存量,以便告诉 JVM 它应该运行 GC?如果我理解正确的话,那么Dalvik does this ,但如果有一种可靠的方法可以在所有 JVM 上执行此操作,那就太好了。

谢谢!

最佳答案

你无法告诉 JVM 使用了多少 native 内存,JVM 根本没有任何接口(interface)。但如果你只是不想耗尽内存,因为 JVM 没有注意到你使用了多少内存,我可以想到两种方法:

  1. 使用 java.lang.System.gc() 强制运行 GC每当你认为 JVM 应该做的事情时。 Smarter people than me are suggesting it.不要忘记 GC 会影响 JVM 性能。
  2. 分配一个足够大的直接缓冲区以满足应用程序的峰值总使用量,使其持久化并对其进行自己的内存管理。 This is suggested by the NIO doc itself ,因为直接缓冲区的释放/分配成本较高。重复使用它。在大缓冲区的偏移处读取和写入部分 ByteBuffer。

关于java - 告诉 JVM 使用了多少 native 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761262/

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