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

  • 相关阅读:
    Uni项目启动微信、QQ、淘宝、抖音、京东等APP的方法
    input 标签为checkbox时修改 checkbox的样式
    关于CSS HACK
    前端JS生成可用的MD5加密代码
    把ucharts 封装成组件
    学期总结
    作业1
    作业02
    C语言I博客作业09
    C语言I博客作业08
  • 原文地址:https://www.cnblogs.com/lestatzhang/p/10611319.html
Copyright © 2011-2022 走看看