`
- 浏览:
122554 次
- 性别:
- 来自:
上海
-
空对象占8个字节
有数据成员的话,你把数据成员按基本数据类型和对象引用分开统计。
基本数据类型按byte/boolean=1,char/short=2,int/float=4,long/double=8,累加,然后对齐到8的倍数。
对象引用按每个4字节,累加,然后对齐到8个字节的倍数。
=============
对象占用字节数=基本的8字节+基本数据类型所占的+对象引用所占的
比如
class A{
int a;
char b;
}
占 8(基本)+8(int 4+char 2=6,对齐到8)= 16个字节
再比如:
class B{
Integer a;
long b;
byte c;
}
占 8(基本)+8(long8+byte1=9,对齐到8)+8(对象引用4,对齐到8)=32个字节
===============
如果你是从别的类继承的,父类的也要算上。
这与C++不同,C++中,空对象占一个字节,有数据成员则按数据成员对齐后,得到的大小
#include <iostream.h>
class A
{
private:
int i;
char b;
};
void main()
{
A a;
cout<<sizeof(a)<<endl;
}
得到的是8
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
测试java对象占用内存大小的例子,可以测试常用的类型
JAVA对象所占内存大小计算例子,博文地址:http://blog.csdn.net/u012787710/article/details/53164226
java-sizeof-0.0.4:一个查看java对象占用内存大小
有效测量出 java 对象 内存 大小 可供缓存等计算
统计缓存大小(查看java对象所占的内存大小).
要更好的理解你的Java程序将会占用多大的内存需要先了解有哪些因素会影响到内存的占用。这些因素包括: ● 对象(Objects) ● 类(Classes) ● 线程(Theads) ● 本地数据结构(Native data ...
废话不多说,一起开干 1 前置知识 本次实验基于jdk8 64位以及以上版本。本机环境为jdk11 先查看一下jvm启动的默认参数,里面有2个参数值对本次实验会造成影响。 命令行: java -XX:+PrintCommandLineFlags -version ...
java中的栈(深层了解java虚拟机对对象的内存分布)
JAVA内存溢出问题总结
Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过...
对象所需内存大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从java堆中划分出来。根据java堆内存是否绝对规整,划分方法不同: 1)指针碰撞(Bump the Pointer): Java堆中内存绝对...
然后通过收集每次垃圾回收事件后对象之间的引用关系和对象内存大小, 计算得到集合类对象的内存影响值。接着通过修改字节码的方式获取到集合类 对象使用集合内元素的数据,计算出相应的元素使用影响值。最后...
第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 实体域对象的其他持久化模式...
java 作为现在用户最多,使用最为...纳更多的活跃对象。此外 , 评估堆栈的正确性和效率通过一个访问障碍。该实验结果 以一系列 SPECjvm2008 的基准表示出来。根据不同的标准测试得垃圾回收小效率有 2%-5% 的提升。
原项目下载地址:...使用说明: 1、将SizeOf.jar放到Eclipse工程路径下,添加到classpath中; 2、运行前添加VM参数:-javaagent:lib/SizeOf.jar 运行即可(将jar放在lib路径下)。
jmap:打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。 jconsole:一个javaGUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。
Java内存与垃圾回收调优,Java内存与垃圾回收的调优是一个重要的主题,特别是在高性能和大规模的应用程序中。以下是一些关键的调优建议和步骤: 理解内存结构: Java堆是主要的内存区域,用于存储对象实例。 堆内存...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
一种通用的内存池(也位于RAM区),用于存放所有的java对象。堆不同于堆栈的好处是:编译器不需要知道要从堆里分配多少存储区域,也不必知道存储的数据在堆里存活多长时间。因此,在堆里分配存储有很大的灵活性。当...