基本数据类型:

由上向下,可以自动转型,注意:整形可以转换成浮点型,但会有精度损失,浮点型内部是科学计数法储存的

  • byte (1 byte = 8 bit )
  • short ( 2 byte ) char ( 2 byte )
  • int ( 4 byte )
  • long ( 8 byte )
  • float ( 4 byte )
  • double (8 byte)

引用数据类型:

注意:一般内存的使用会填充为8字节(64位计算机的机器字)的倍数

  • 普通对象(16+N*8)

  1. 对象开销(16字节):指向对象的类的引用,垃圾收集信息,同步信息
  2. 成员内存(N*8):
    1. 基本数据类型(<=4位的会进行填充,直到8字节)
    2. 应用数据类型:直接存储地址(8字节)
  • 内部类(16+8+N*8)

比普通的类多了一个指向外部类的引用(8字节)

  • 数组

    • 基本数据类型数组(16+4+4+N*size+填充字节)

      1. 对象开销(16字节):指向对象的类的引用,垃圾收集信息,同步信息
      2. 数组长度信息(4字节+4字节填充)
      3. 基本数据的字节数(size)×数量+填充字节(大小不一,只为保证内存长度为8的倍数)
    • 引用数据类型(16+4+4+N*size)
      1. 对象开销(16字节):指向对象的类的引用,垃圾收集信息,同步信息
      2. 数组长度信息(4字节+4字节填充)
      3. 引用数据的字节数(size)×数量(参见对象)
  • 字符串(16+8+4+4+4+4=40 || 40+额外开销)

    • 原始字符串

      1. 对象开销(16字节):指向对象的类的引用,垃圾收集信息,同步信息
      2. 指向字符数组的引用,没错,String其实是用char[]实现的(8字节)
      3. 字符数组的偏移量(4字节)
      4. 计数器(字符数组的长度)(4字节)
      5. 散列值(用于哈希查找,提高查找效率)(4字节)
      6. 填充字节(ps:没错我又来了)(4字节)
      7. 额外开销(字符串的开销 24+2N+填充字节)
    • 子字符串

当一个字符串是原始字符串的子串的时候,它其实使用的父串的字符数组的一部分,所以它不需要额外开销,也就是一个子串所需的内存空间上常数(固定的40),构建它需要的时间也是常数

Java 数据类型内存分析相关推荐

  1. Java编程内存分析简要

    Java编程内存分析简要 需求1:计算五名学生,一门课程的平均分. 分析数据存储: 数组存储数据(1) 数组存储数据(2) 数组存储数据(3) 关于需求1使用面向对象程序设计思想的思考. 需求2:计算 ...

  2. Java程序内存分析

    2019独角兽企业重金招聘Python工程师标准>>> Java程序内存分析:使用mat工具分析内存占用 http://my.oschina.net/biezhi/blog/2862 ...

  3. Java 堆内存分析

    Java 堆内存工具jmap 打印当前 Java 堆内存信息 jmap -histo[:live] <pid> # 打印当前进程中类实例信息 导出Java 堆内存到文件 jmap -dum ...

  4. java 堆内存分析_JVM内存堆布局图解分析

    JAVA能够实现跨平台的一个根本原因,是定义了class文件的格式标准,凡是实现该标准的JVM都能够加载并解释该class文件,据此也可以知道,为啥Java语言的执行速度比C/C++语言执行的速度要慢 ...

  5. 面试积累(java的内存分析)

    关于java中的内存分析: 1 首先,java中的内存总体分为了四个部分,分别为stack segment,heap segment,code segment,data segment.即 栈区,堆区 ...

  6. Java数据类型及分析

    一.java数据类型 1.基本数据类型(8种):2.引用数据类型(3种) 基本的变量类型只有一块存储空间(分配在stack中),而引用类型有两块存储空间(一块在stack中,一块在heap中). 注意 ...

  7. java怎么看内存值_【java】内存分析

    在J2SE中,通过进行内存分析,可以让我们更好的理解我们的程序在内存中是怎么被分配内存的.也能让我们更好的理解我们的代码是怎么运行的. 对于我自己来说分析内存也是一件很有趣的事情.所以下面通过一个例子 ...

  8. Java JVM内存分析

    2019独角兽企业重金招聘Python工程师标准>>> JVM常见参数及溢出分析工具和方法 JDK1.6.45常用基本参数 -server 服务模式启动  -verbose:gc 开 ...

  9. Java程序内存分析:使用mat工具分析内存占用

    1. 用jmap生成堆信息 2. 将堆信息导入到mat中分析 3. 生成分析报告 Histogram Dominator Tree Top consumers Leak Suspects MAT 不是 ...

最新文章

  1. 经验 | 深度学习优化背后的数学基础
  2. 35岁之后,你还会继续写代码吗?
  3. 【NLP】文本生成?还不快上知识库
  4. Linux系统/网络管理
  5. vlc 缓冲大小 设置_用libvlc 播放指定缓冲区中的视频流
  6. GPU基准测试显示:苹果A15芯片比A14芯片快13.7%
  7. 匿名页反向映射得建立
  8. SUMO与各类软件的联合仿真方法
  9. 约瑟夫环数据结构课程设计详解
  10. SGG Trans【Bridging Knowledge Graphsto Generate Scene Graphs】
  11. Linux 账号管理与 ACL 权限配置
  12. 家政维修小程序+上门预约小程序+VUE前后端分离+uniapp(附近师傅+门店入驻+在线抢单服务APP、小程序、公众号、H5)
  13. Java中的Math函数常用方法总结
  14. Mr.Alright--- Android 11(R)桌面文件夹预览布局类似9宫格的实现
  15. 每当图片传过来时进行对比_每当应用开始使用Mac的网络摄像头时如何获取通知...
  16. 关于timeSetEvent的精确度缺陷分析_备份以防后续使用到时作为参考
  17. 【淘宝SEO技巧】淘宝宝贝标题关键字优化
  18. 创世茶小Y系列—茶元后·龙门飞瀑来袭
  19. WPF帝友借贷系统MV模式开发日志2021/04/02_前台登入注册页面搭建
  20. JAVA实现坦克大战(JAVA小游戏)

热门文章

  1. 数组的降序排序 java
  2. python遍历获取一个类的所有子类
  3. mysql-电商库演练2-拆表-修改字段-添加外键
  4. python导出mysql授权语句
  5. TDengine安装
  6. 数据库管理工具 Navicat使用教程:在SQL Server上监视什么(第1部分)
  7. lower_bound
  8. 2016上半年中国云存储排行榜:阿里云居榜首
  9. freemarker判断是否为空
  10. SQL --几张表公有字段的查询