gpt4 book ai didi

java - 在 Java 中使用直接内存的目的是什么?

转载 作者:行者123 更新时间:2023-12-03 18:32:26 27 4
gpt4 key购买 nike

Direct memory was introduced since java 1.4. The new I/O (NIO) classes introduced a new way of performing I/O based on channels and buffers. NIO added support for direct ByteBuffers, which can be passed directly to native memory rather than Java heap. Making them significantly faster in some scenarios because they can avoid copying data between Java heap and native heap.



我一直不明白我们为什么要使用直接内存。有人可以帮忙举个例子吗?

最佳答案

I never understand why do we use direct memory. can someone help to give an example?



所有系统调用(例如读写套接字和文件)仅使用 native 内存。他们不能使用堆。这意味着虽然您可以从堆复制到 native 内存/从 native 内存复制,但避免这种复制可以提高效率。

我们使用堆外/ native 内存来存储我们的大部分数据,这具有许多优点。
  • 它可以大于堆大小。
  • 它可以大于主内存。
  • 它可以在 JVM 之间共享。即多个 JVM 的一份副本。
  • 它可以在 JVM 甚至机器重新启动时持久化和保留。
  • 它对 GC 暂停时间几乎没有影响。
  • 根据使用情况,它可以更快

  • 它没有被更多使用的原因是它更难使它既高效又像普通 Java 对象一样工作。出于这个原因,我们有诸如 Chronicle Map 之类的库。充当 ConcurrentMap但使用堆外内存,和 Chronicle Queue它是进程之间的日志、记录器和持久化 IPC。

    关于java - 在 Java 中使用直接内存的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52769633/

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