`
flychao88
  • 浏览: 751982 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java常用对象的内存占用大小

 
阅读更多

这里介绍java常用对象的内存占用大小.32位和64位以及不同的jvm参数可能会导致对象大小不同.

java版本
    Open JDK 64-bit

jvm参数
    -Xmx2g -Xms2g

基本类型
对象                                                       32位大小 
new Object()                                               16 
new String("")                            48 
new String(new char[] {'1'})                         56 
new String(new char[] {'1','2','3','4'})            56 
new String(new char[] {'1','2','3','4','5'})       64 
new Integer(0)                                            16 
new Long(0)                                               24 
new Float(0)                                               16 
new Double(0)                                            24 
new BigDecimal(0)                                     40 
new Date()                                                 24 
new java.sql.Timestamp()                           32 
UUID                                                           64 
GregorianCalendar                                    448 
new AtomicBoolean()                                 16 
new AtomicInteger()                                   16 
new AtomicLong()                                      24

容器
对象                                                        大小
new TreeMap()                                        48
new HashMap()                                       136
new HashMap(1)                                      80
new Hashtable()                                       120
new Properties()                                      120
new LinkedHashMap()                             120
new WeakHashMap()                               144
new ConcurrentSkipListMap()                  104
new ConcurrentHashMap()                       224
new ConcurrentHashMap(1,0.75f,1)         168
new TreeSet()                                           64
new HashSet()                                          160
new LinkedHashSet()                                200
new ArrayList()                                          80
new ArrayList(1)                                        48
new CopyOnWriteArrayList()                     88
new CopyOnWriteArraySet()                     104
new Vector()                                              88
new LinkedList()                                        32
new Stack()                                               88
new PriorityQueue()                                  96
new ConcurrentLinkedQueue()                 48

数组
对象 大小
new byte[0]                                         16
new byte[1]                                         24
new byte[8]                                         24
new short[0]                                        16
new short[1]                                        24
new short[4]                                        24
new short[5]                                        32
new char[0]                                         16
new char[1]                                         24
new char[4]                                         24
new char[5]                                         32
new int[0]                                            16
new int[1]                                            24
new int[2]                                            24
new int[3]                                            32
new long[0]                                         16
new long[1]                                         24
new long[2]                                         32
new Object[0]                                      16
new Object[1]                                      24
new Object[2]                                      24
new Object[3]                                      32

 

分享到:
评论
1 楼 di1984HIT 2014-06-17  
从哪里得到的?

相关推荐

    java内存泄露、溢出检查方法和工具

    在Java中,内存泄露通常发生在对象不再被程序使用但仍然保持在内存中,导致可用内存逐渐减少。长期的内存泄露会导致Java虚拟机(JVM)的堆内存耗尽,引发OutOfMemoryError。 检查Java内存泄露的方法主要包括以下几...

    Eclipse使用SizeOf.jar工具监测内存占用

    运行上述测试代码后,控制台将显示所测试对象的内存占用大小。通过这种方式,你可以准确地了解到不同数据结构或对象的实际内存消耗,并据此进行相应的优化工作。 #### 结论 通过上述步骤,我们不仅学会了如何在...

    JAVA内存模型与垃圾回收

    在Java中,一个对象是可达的,如果它被根(如类的静态变量或活动线程栈中的引用)或另一个可达对象引用。 - **标记-清除(Mark-Sweep)**:标记所有可达对象,然后清除其余对象。 - **复制(Copying)**:将...

    用JAVA做的虚拟内存管理.rar,JDK是6.2

    1. **堆内存**:这是Java程序的主要内存区域,所有对象实例都在堆中分配。JDK 6.2时期,JVM使用分代垃圾收集器,通常分为新生代(Young Generation)、老年代(Tenured Generation)和持久代(Permanent Generation...

    Java之基本数据类型 Sizeof 大小

    在`clazzSize`这个文件名中,我们可以推测这可能是一个与类或者对象大小相关的资源,可能包含了不同数据类型实例化后的内存占用情况。通过分析这样的数据,我们可以更深入地理解Java内存模型,并优化我们的代码以...

    IBM内存分析工具(java)

    - 分析dominator树,查找内存占用最大的对象。 - 使用"Leak Suspects"报告,MAT会自动分析并给出可能的内存泄露点。 - 查看"Top Consumers",找出消耗内存最多的类或数据结构。 - 对比不同时间点的快照,追踪...

    java对象缓冲实现中间件

    在Java中,实现对象缓冲的方式多种多样,常见的有以下几种: 1. **HashMap**: 基于哈希表的数据结构,提供O(1)的平均查找时间。在Java中,`java.util.HashMap`类常被用来作为基础缓存结构。开发者可以自定义一个...

    简单介绍Java语言中内存管理的几个技巧

    `HashMap`是Java中常用的键值对存储结构,它通过哈希算法快速定位元素,提高访问效率。但在使用`HashMap`时,需要注意其内部维护的哈希表大小和负载因子,合理设置这些参数可以有效减少内存消耗。 ### 五、理解数据...

    Java堆内存最佳实践.pdf

    这个文件可以用内存分析工具(如Eclipse Memory Analyzer Tool,MAT)进行深入分析,查找内存泄漏、长生命周期对象和不必要的内存占用。 总结来说,Java堆内存最佳实践主要包括: 1. 了解并分析GC日志,减少不必要...

    ibm查看Java内存工具.zip

    它提供了丰富的视图,包括CPU使用率、线程状态、内存分配等,可以进行堆转储分析,找出内存占用大的对象。 JConsole是Java的标准监控工具,它能够显示JVM的运行时信息,包括内存使用、线程状态、类加载和垃圾收集等...

    java机制介绍

    - 内存泄漏:在Java中,内存泄漏指的是那些可达但无用的对象,即在程序运行期间不会被使用到的对象。尽管这些对象可以被垃圾回收机制回收,但在被回收之前它们仍然占用内存空间。 - GC的工作:垃圾回收机制监控...

    java入门、java内存区域和OOM、垃圾回收器和垃圾回收策略

    - **堆**:存放所有类实例和数组,是Java中最大的内存区域,也是垃圾收集的主要区域。 - **方法区/元空间**:存储已加载的类信息、常量、静态变量等。 3. **Out of Memory (OOM)** 错误: 当Java应用程序请求的...

    java开发常用单词总结

    - **Garbage Collection**:垃圾回收,自动管理内存的过程,释放不再使用的对象所占用的内存空间。 - **Eden**:初始对象存放区域,在Java堆中的一部分,用于存放新创建的对象。 - **Survivor**:幸存者区,对象经过...

    模拟内存申请与释放

    在Java中,`ArrayList`是一个常用的可变大小的数组,它可以用来模拟内存的动态分配。当我们创建一个`ArrayList`时,系统会在堆内存中为它分配一定的空间,初始容量通常是10个元素。随着元素的增加,如果现有的容量不...

    java内存分析工具介绍

    Java内存分析工具是Java开发过程中不可或缺的利器,主要用于检测和解决程序中的内存泄漏问题,以及进行性能监控。本文将深入探讨几种常用的Java内存分析工具,它们的特点、使用方法以及如何利用这些工具有效地优化...

    java内存泄露、溢出检查方法和工具归纳.pdf

    例如,可以启用JDK的GC日志输出,通过`-verbose:gc`和`-XX:+PrintGCDetails`参数来观察GC的行为,找出可能导致内存占用过高的对象。 此外,还有一些专业的内存分析工具,如VisualVM、MAT(Memory Analyzer Tool)和...

    java内存管理白皮书

    首先,Java虚拟机内存管理机制的核心是垃圾收集(Garbage Collection, GC),它能够自动识别不再被引用的对象,并释放它们占用的内存空间。这一机制让开发者不需要关心内存分配和释放的细节,从而专注于业务逻辑的...

    从JAVA代码到JAVA堆(应用程序内在的使用量与最佳化)日文版

    Java堆内存的大小可以通过JVM参数来控制,最常用的是`-Xms`和`-Xmx`参数,分别设置Java堆的初始大小和最大大小。合理配置这些参数是内存优化的重要部分。 除了代码层面的优化,还需要理解Java进程的内存布局。Java...

    jvm问题排查

    - **表现形式**:应用运行一段时间后,内存占用持续增加,即使经过GC也没有明显改善。 - **解决方案**: - 使用`jmap`生成heap dump文件。 - 使用MAT(Memory Analyzer Tool)等工具分析heap dump文件,找出内存...

    如何设置Tomcat的JVM虚拟机内存大小

    例如,JDK 内存优化,可以在文件 /bin/catalina.bat 或 /bin/catalina.sh 中增加 JAVA_OPTS 设置,来调整 JVM 的内存大小。连接器优化可以在 Tomcat 配置文件 server.xml 中进行配置,例如,maxThreads、acceptCount...

Global site tag (gtag.js) - Google Analytics