zoukankan      html  css  js  c++  java
  • On-heap vs Off-heap 堆内内存与堆外内存

    JVM主要的内存区域有

    • heap
    • stack
    • 其它寄存器。

    heap主要是用来存储对象实例及数组值,可以认为java中所有通过new创建的对象都在此分配。

    On-heap是指在堆内内存,由GC进行创建回收,可以通过参数-Xms(最小)和-Xmx(最大)来控制

    Off-heap是指在堆外内存,不由GC创建,但可以通过full GC回收,通过-XX:MaxDirectMemorySize设置大小。

    通俗的讲,Off-heap存储就好比在Java堆外部的数据库中存储对象。
    优点是我们可以在该数据库中存储大量对象,而不受垃圾收集器管理。
    但是,当我们运行查询以从该数据库检索对象时,这些对象将复制到Java堆上。
    如果我们的应用程序经常检索某个对象,然后在处理请求时丢弃它们,则必须对每个请求检索的对象进行垃圾回收。
    而若我们使用On-heap存储,在处理每个请求后,所需的对象将保留在堆上,以备后续请求继续使用。

    缓存数据存放一般支持On-heap及Off-heap:
    堆内存放开销小、效率高、存储大小受限制,
    堆外存放开销大(还是比disk快,建议使用缓冲池)、存储容量较大,适合 存储不怎么变化 的数据。

    参考资料
    groups.google.com

  • 相关阅读:
    LoadScript
    Mac终端Terminal调用Sublime Text
    jquery ajax 提交 FormData
    ps切图设置
    bootstrap-select搜索框输入中文
    Homebrew安装
    清空file input框
    javascript 随机数区间
    Canvas与Image互转
    html空格小结
  • 原文地址:https://www.cnblogs.com/lestatzhang/p/10611319.html
Copyright © 2011-2022 走看看