跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • java8 的内存模型疑问。
未分類
24 5 月 2020

java8 的内存模型疑问。

java8 的内存模型疑问。

資深大佬 : xiaobaobao 1

8 现在是把之前的方法区转变成了元空间,元空间被放在本地内存中,与此同时我看到很多文章还有写直接内存也是在本地内存中,和元空间并列的
可是当我去查什么是直接内存,很多都是当作本地内存来说。
疑问是:
1:正确的内存模型下本地内存是分为元空间和直接内存吗?
2:1 成立的话,什么是直接内存?就单单只是直接操作堆外内存?不是一个空间就只是一个操作什么的吗?
大佬有話說 (6)

  • 資深大佬 : Aresxue

    Heap memory 堆内存:JVM 进程内的内存,由 JVM 管理以表示 Java 对象
    Native memory/Off-heap:是在不在堆内的进程地址空间内分配的内存(还属于 JVM 的进程分配内存)
    Direct Memory 直接内存:类似于本机,但也意味着正在共享硬件中的底层缓冲区。例如网络适配器或图形显示中的缓冲区。这里的目标是减少在内存中复制相同字节的次数
    是分配在 C Heap 上的 Buffer,由于不属于 JVM HEAP,管理 /监控起来会比较困难,但也会被 GC 回收。DirectByteBuffer 自身是( Java )堆内的,它背后真正承载数据的 buffer 是在( Java )堆外——Native memory 中的

    native heap: 本机内存(原指机器的所有内存,jvm 进程使用的也是它的一部分,但一般场景下经常指不属于 jvm 进程的内存)

  • 資深大佬 : CRUD

    1.元空间使用的就是直接内存,即元空间时在直接内存上分配
    2.直接内存是使用 native 函数库直接分配的,使用 native 函数库直接分配堆外内存后在通过存储在 Java 堆中的 DirectByteBuffer 对象做为这块内存的的引用进行操作,不受 Java 虚拟机管理,大小不受 Java 堆限制但受物理机总内存限制。

  • 資深大佬 : wysnylc

    8 还好还是分代模型,ZGC 直接推翻标记整理+复制算法而且(暂时)不分代

  • 資深大佬 : sonice

    @Aresxue Direct memory 是省去的 heap 到 native 还是 native 到 kernel 的复制啊?

  • 資深大佬 : luozic

    zgc 不分代就是新分配对象内存性能会比分代的 C4GC 性能差点,不过在大内存上面比其他几个 hotspot 的 gc 性能强多了。

  • 資深大佬 : Aresxue

    @sonice 都有,Direct Memory 使用的是 Native memory/Off-heap,仍归属于 Java 进程,所以该部分内存本身是在用户空间的,但用户态和内核态之间的拷贝其实也被优化了,本质上是因为用户态的逻辑地址和内核态的逻辑地址
    使用的是同一个物理空间,所以相当于用户态和内核态也不存在拷贝

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具