JVM内存分配上不易超过30g-32g
事实上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相关推荐
- 【拥抱大厂系列】百度面试官问过的 “JVM内存分配与回收策略原理”,我用这篇文章搞定了
点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了3个月总结的一线大厂Java面试总结,本人已拿腾 ...
- 深入理解Java虚拟机(第三弹)- JVM 内存分配与回收策略原理,从此告别 JVM 内存分配文盲
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:打卡活动第二期来啦,100% 能获得奖品个人原创+1博客:点击前往,查看更多 虚拟机系列文章 深入理解 Java ...
- Android性能调优篇之探索JVM内存分配
开篇废话 今天我们一起来学习JVM的内存分配,主要目的是为我们Android内存优化打下基础. 一直在想以什么样的方式来呈现这个知识点才能让我们易于理解,最终决定使用方法为:图解+源代码分析. 欢迎访 ...
- JVM内存分配与垃圾回收
其实已经有很多大牛在这方面做了很好的介绍,我在这篇文章里讲下我自己的一些理解,受限于我的认知水平,可能不一定正确,请自我甄别. JVM的GC自动垃圾回收器是JAVA的一大特色,垃圾回收器要解决 ...
- 深入理解JVM内存分配策略
点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长 每天早上8点20分, 第一时间与你相约 每日英文 Don't blame people for disappointing ...
- 一个可以参考的JVM内存分配
下面是java命令有关JVM内存分配的参数 JAVA_MEM_OPTS="" BITS=`java -version 2>&1 | grep -i 64-bit` i ...
- JAVA面向对象OOP→构造方法、this、访问修饰符、static、方法重载、JVM内存分配、GC垃圾回收、包、样例代码
构造方法 构造方法(constructor):与类名同名,没有返回值 其初始化作用:一为属性分配内存空间.二为属性赋值 构造方法不能自己调用,只能通过new实例化对象调用 隐式构造方法:对象实例化时编 ...
- JVM内存分配机制详解
目录 1. 对象创建流程(TODO) 1.1 jvm分配内存 1.2 设置对象头 1.2.1 对象头实例 1.2.2 指针压缩 2.JVM对象内存分配 2.1 逃逸分析和标量替换 2.1.1 逃逸分析 ...
- JVM内存分配与垃圾回收浅析
为什么80%的码农都做不了架构师?>>> 想做architect,就必须对JVM的性能有所了解.JVM的内存管理是性能的一大瓶颈.JVM的性能调优,必须建立在对内存管理策略理解 ...
最新文章
- openGL 入门 2--顶点数组对象 VAO 和 缓存对象 VBO
- 系统服务器巡查表,服务器操作系统巡检表
- AI算法工程师必备技术,快快积累!
- SAP CRM WebUI Opportunity belongs to me的处理逻辑
- Unity游戏开发之C#快速入门
- 后端开发:数据持久化框架为什么放弃Hibernate、JPA、Mybatis,最终选择JDBCTemplate!...
- 初探Object Pascal的类(十一)
- js右下角广告[兼容]
- helix server配置教程
- 35岁是个坎,为啥到岁数就不想要你了
- 2021边缘保研经历(整个大三),川大 - 浙大软院
- 咏红梅花——曹雪芹_ywyuan_新浪博客
- 神经网络程序设计课学习心得
- Jetson nano卸载opencv 4.1.1安装opencv3.4.10
- java中的variable是什么,Java POJO中的field,variable,attribute和property有什么区别?
- js里分割字符串,数组拼接
- 思科刀片服务器统一计算系统,思科统一计算系统白皮书.doc
- c运行库之 c语言标准库、glibc、 gcc库
- 中兴远航30Pro什么时候发布 中兴远航30Pro配置如何
- 螺钉分类及表面处理种类
热门文章
- linux bash 效率,提高Linux工作效率的十大bash技巧
- python一元线性回归绘制_简单一元线性回归实现python
- 深入理解JVM(③)低延迟的Shenandoah收集器
- java.lang.SecurityException: Permission Denial: starting Intent { act=android.med 安卓7.0
- Java - 栈和队列
- python仿真入门_python simulation入门
- 推箱子小游戏——地图
- CVPR2020-Reverse Perspective Network for Perspective-Aware Object Counting:透视感知目标计数的反向透视网络
- 4.1 字符串及其表示
- Axure学习——页面跳转