【问题标题】:Does GetPrimitiveArrayCritical OpenJDK hotspot never copy?GetPrimitiveArrayCritical OpenJDK 热点从不复制吗?
【发布时间】:2017-12-04 12:38:25
【问题描述】:

在 GetPrimitiveArrayCritical 的文档中它说它有时可能会复制数组。他们的 JDK 的 IBM 文档说,如果数组大小小于堆大小的 1/1000,它很可能不会复制它。我查看了 OpenJDK 8 中的函数代码,它似乎从不复制它,而只是将 isCopy 设置为 false。 我在文件中检查了 http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/872e9c4548bf/src/share/vm/prims/jni.cpp 在第 4250 行。 这是否意味着如果我使用openJDK我不会遇到JVM复制内存的问题?

附:我不在乎我的代码是否在任何其他 JVM 上运行。

【问题讨论】:

    标签: java java-8 openjdk


    【解决方案1】:

    我仔细检查了 OpenJDK 8 源代码,是的,GetPrimtiveArrayCritical 似乎确实从不复制。它甚至不依赖于垃圾收集算法。 OpenJDK 9 中的代码类似。依靠这个是否是一个好主意完全是另一个问题。类似的GetStringCritical 方法在许多情况下开始在 OpenJDK 9 中进行复制(即,当字节数组用作字符串的后备数组时)。

    【讨论】:

    • 谢谢,只是需要有人确认一下。我要滥用这个很多:)
    猜你喜欢
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    相关资源
    最近更新 更多