文档章节

64位jvm的指针膨胀 和 数据补白

treenewtreenew
 treenewtreenew
发布于 2016/12/12 17:58
字数 341
阅读 118
收藏 0

指针膨胀:64位jvm寻址范围较32位变成了64位,叫做指针膨胀;

64位数据补白:数据在64位jvm中存储较之32位jvm需要对数据位进行对齐补白;

因为以上原因64位jvm通常需要更多的内存,比32位jvm多10%到30%,在主流测试环境中64位jvm测试速度也比32位jvm落后,性能差15%左右。

所以很多工程师在采用32位集群方式部署应用,但这种方案也有缺陷: 1、集群节点可能竞争全局资源; 2、一些资源池比如连接池可能利用率不高,因为一般情况下各个节点都有自己的连接池,可能出现有的节点连接池满了,有的节点连接池有较大空余;可以用JNDI改善此类情况但又有性能开销和复杂度。 3、各个节点最高4G的限制,windows下只有2G,堆内存最大可能为1.5G左右。

在jdk1.6 update14之后,sun提供了指针压缩功能(-XX:+ UseCompressedOops),执行代码时动态加入压缩指令以减少内存消耗,但同时会增加代码数量,所有heap内的指向heap内对象的指针都会压缩。

© 著作权归作者所有

共有 人打赏支持
treenewtreenew
粉丝 3
博文 54
码字总数 51799
作品 0
昌平
私信 提问
Java并发--synchronized实现原理及锁优化

注:本文中的部分内容摘抄自他人博客,如有侵权,请联系我,侵删~ 本篇博客主要讲述 synchronized 关键字的实现原理以及 JDK 1.6 后对 synchronized 的种种优化。synchronized 的使用不再赘述...

championhengyi
04/27
0
0
【转】HotSpot虚拟机对象探秘

请读者首先注意本篇的题目中的限定语“HotSpot虚拟机”,在虚拟机规范中明确写道, 所有在虚拟机规范之中没有明确描述的实现细节,都不应成为虚拟机设计者发挥创造性的牵绊,设计者可以完全自...

mj4738
2012/02/19
0
0
JVM 32bit 64bit区别

Java程序运行在64位机器上会付出比较大的代价: 1,内存问题 1)内存寻址范围较32位扩大了1倍,也就是指针膨胀; 2)数据类型在64位中存储需要对齐补白; 以上两个原因,导致64位较32位需要消...

克温s
2015/12/24
70
0
阿里架构师眼里JVM可以说的那些事

前言 对于C语言开发的程序员来说,在内存管理方面,必须负责每一个对象的生命周期,从有到无。 对于Java程序员你来说,在虚拟机内存管理的帮助下,不需要为每个new对象都匹配free操作,内存泄...

07/09
0
0
如何计算Java对象所占内存的大小

摘要 本文以如何计算Java对象占用内存大小为切入点,在讨论计算Java对象占用堆内存大小的方法的基础上,详细讨论了Java对象头格式并结合JDK源码对对象头中的协议字段做了介绍,涉及内存模型、...

阿里云云栖社区
05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis异构集群之间数据迁移方案

一、Redis集群迁移工具 最近在做Redis数据迁移,网上找了两款开源的Redis迁移工具。 第一种:redis-port Codis官方提供的一个工具,redis-port是一个Redis工具,通过解析rdb文件,实现Redis...

IT--小哥
6分钟前
0
0
MySQL5.7源码安装

5、MySQL源码安装(centos7.5) 5.1 下载软件 官方自带(boost版本mysql) wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz tar xf mysql-boost-5.7.20.tar.g......

hnairdb
10分钟前
0
0
解压zip包(zip4j)

1:引入zip4j_1.3.2.jar 2:源码如下: package test;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;import net.lingal......

uug
13分钟前
0
0
MySQL 8在CentOS 7用rpm安装

1.配置MySQL yum安装源和安装: #配置MySQL5.7的安装源 #https://repo.mysql.com/mysql57-community-release-el7.rpm #https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rp......

MichaelShu
20分钟前
0
0
docker 安装zookeeper

1.下拉镜像: docker pull zookeeper 2.运行镜像: docker run --name myZookeeper --restart always -d zookeeper 此时,2181 2888 3888分别是zookeeper的(客户端端口,跟随端口,选择端口)...

狼王黄师傅
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部