事实上jvm在内存小于32G的时候会采用一个内存对象指针压缩技术。

在java中,所有的对象都分配在堆上,然后有一个指针引用它。指向这些对象的指针大小通常是CPU的字长的大小,不是32bit就是64bit,这取决于你的处理器,指针指向了你的值的精确位置。

对于32位系统,你的内存最大可使用4G。对于64系统可以使用更大的内存。但是64位的指针意味着更大的浪费,因为你的指针本身大了。浪费内存不算,更糟糕的是,更大的指针在主内存和缓存器(例如LLC, L1等)之间移动数据的时候,会占用更多的带宽。

Java 使用一个叫内存指针压缩的技术来解决这个问题。它的指针不再表示对象在内存中的精确位置,而是表示偏移量。这意味着32位的指针可以引用40亿个对象,而不是40亿个字节。最终,也就是说堆内存长到32G的物理内存,也可以用32bit的指针表示。

一旦你越过那个神奇的30-32G的边界,指针就会切回普通对象的指针,每个对象的指针都变长了,就会使用更多的CPU内存带宽,也就是说你实际上失去了更多的内存。事实上当内存到达40-50GB的时候,有效内存才相当于使用内存对象指针压缩技术时候的32G内存。

这段描述的意思就是说:即便你有足够的内存,也尽量不要超过32G,因为它浪费了内存,降低了CPU的性能,还要让GC应对大内存。

JVM内存分配上不易超过30g-32g相关推荐

  1. 【拥抱大厂系列】百度面试官问过的 “JVM内存分配与回收策略原理”,我用这篇文章搞定了

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了3个月总结的一线大厂Java面试总结,本人已拿腾 ...

  2. 深入理解Java虚拟机(第三弹)- JVM 内存分配与回收策略原理,从此告别 JVM 内存分配文盲

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:打卡活动第二期来啦,100% 能获得奖品个人原创+1博客:点击前往,查看更多 虚拟机系列文章 深入理解 Java ...

  3. Android性能调优篇之探索JVM内存分配

    开篇废话 今天我们一起来学习JVM的内存分配,主要目的是为我们Android内存优化打下基础. 一直在想以什么样的方式来呈现这个知识点才能让我们易于理解,最终决定使用方法为:图解+源代码分析. 欢迎访 ...

  4. JVM内存分配与垃圾回收

        其实已经有很多大牛在这方面做了很好的介绍,我在这篇文章里讲下我自己的一些理解,受限于我的认知水平,可能不一定正确,请自我甄别. JVM的GC自动垃圾回收器是JAVA的一大特色,垃圾回收器要解决 ...

  5. 深入理解JVM内存分配策略

    点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长 每天早上8点20分, 第一时间与你相约 每日英文 Don't blame people for disappointing ...

  6. 一个可以参考的JVM内存分配

    下面是java命令有关JVM内存分配的参数 JAVA_MEM_OPTS="" BITS=`java -version 2>&1 | grep -i 64-bit` i ...

  7. JAVA面向对象OOP→构造方法、this、访问修饰符、static、方法重载、JVM内存分配、GC垃圾回收、包、样例代码

    构造方法 构造方法(constructor):与类名同名,没有返回值 其初始化作用:一为属性分配内存空间.二为属性赋值 构造方法不能自己调用,只能通过new实例化对象调用 隐式构造方法:对象实例化时编 ...

  8. JVM内存分配机制详解

    目录 1. 对象创建流程(TODO) 1.1 jvm分配内存 1.2 设置对象头 1.2.1 对象头实例 1.2.2 指针压缩 2.JVM对象内存分配 2.1 逃逸分析和标量替换 2.1.1 逃逸分析 ...

  9. JVM内存分配与垃圾回收浅析

    为什么80%的码农都做不了架构师?>>>    想做architect,就必须对JVM的性能有所了解.JVM的内存管理是性能的一大瓶颈.JVM的性能调优,必须建立在对内存管理策略理解 ...

最新文章

  1. openGL 入门 2--顶点数组对象 VAO 和 缓存对象 VBO
  2. 系统服务器巡查表,服务器操作系统巡检表
  3. AI算法工程师必备技术,快快积累!
  4. SAP CRM WebUI Opportunity belongs to me的处理逻辑
  5. Unity游戏开发之C#快速入门
  6. 后端开发:数据持久化框架为什么放弃Hibernate、JPA、Mybatis,最终选择JDBCTemplate!...
  7. 初探Object Pascal的类(十一)
  8. js右下角广告[兼容]
  9. helix server配置教程
  10. 35岁是个坎,为啥到岁数就不想要你了
  11. 2021边缘保研经历(整个大三),川大 - 浙大软院
  12. 咏红梅花——曹雪芹_ywyuan_新浪博客
  13. 神经网络程序设计课学习心得
  14. Jetson nano卸载opencv 4.1.1安装opencv3.4.10
  15. java中的variable是什么,Java POJO中的field,variable,attribute和property有什么区别?
  16. js里分割字符串,数组拼接
  17. 思科刀片服务器统一计算系统,思科统一计算系统白皮书.doc
  18. c运行库之 c语言标准库、glibc、 gcc库
  19. 中兴远航30Pro什么时候发布 中兴远航30Pro配置如何
  20. 螺钉分类及表面处理种类

热门文章

  1. linux bash 效率,提高Linux工作效率的十大bash技巧
  2. python一元线性回归绘制_简单一元线性回归实现python
  3. 深入理解JVM(③)低延迟的Shenandoah收集器
  4. java.lang.SecurityException: Permission Denial: starting Intent { act=android.med 安卓7.0
  5. Java - 栈和队列
  6. python仿真入门_python simulation入门
  7. 推箱子小游戏——地图
  8. CVPR2020-Reverse Perspective Network for Perspective-Aware Object Counting:透视感知目标计数的反向透视网络
  9. 4.1 字符串及其表示
  10. Axure学习——页面跳转