java boolean占用内存是多少

news2024/11/24 17:57:46

一,结论

关于boolean占用内存是多少,我在JVM规范中找到以下解释,但是怎么验证呢?

虚拟机没有给boolean(布尔)类型设置单独指令。boolean型的数据是有integer指令,包括interger返回来处理的。boolean型数组则是用byte数组来处理的。

二,验证

写了两个简单的程序,使用jclasslib查看字节码,对照Java虚拟机指令集后验证结论正确。

 Chapter 6. The Java Virtual Machine Instruction Set

1,boolean型的数据=>32位

代码

public class Test1Type {

    public static void main(String[] args) {

        boolean a=true;
        byte b=1;
        System.out.println(a);
        System.out.println(b);
    }
}

对照图

2,boolean数组型=>8位

代码

public class Test1Type {

    public static void main(String[] args) {

        boolean[] a=new boolean[]{true};
        byte[] b=new byte[]{1};
        System.out.println(a[0]);
        System.out.println(b[0]);
    }
}

对照图

三,查看字节码

如果没有安装jclasslib可以使用javap

javap -v Test1Type.class

输出结果:

D:\Program Files\JetBrains\idea18\work\nacos-develop\demo\core\target\test-classes>javap -v Test1Type.class
Classfile /D:/Program Files/JetBrains/idea18/work/nacos-develop/demo/core/target/test-classes/Test1Type.class
  Last modified 2023-9-18; size 589 bytes
  MD5 checksum dafc695ce0954b2a996cc96f815ba6f3
  Compiled from "Test1Type.java"
public class Test1Type
  minor version: 0
  major version: 52
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
   #1 = Methodref          #6.#24         // java/lang/Object."<init>":()V
   #2 = Fieldref           #25.#26        // java/lang/System.out:Ljava/io/PrintStream;
   #3 = Methodref          #27.#28        // java/io/PrintStream.println:(Z)V
   #4 = Methodref          #27.#29        // java/io/PrintStream.println:(I)V
   #5 = Class              #30            // Test1Type
   #6 = Class              #31            // java/lang/Object
   #7 = Utf8               <init>
   #8 = Utf8               ()V
   #9 = Utf8               Code
  #10 = Utf8               LineNumberTable
  #11 = Utf8               LocalVariableTable
  #12 = Utf8               this
  #13 = Utf8               LTest1Type;
  #14 = Utf8               main
  #15 = Utf8               ([Ljava/lang/String;)V
  #16 = Utf8               args
  #17 = Utf8               [Ljava/lang/String;
  #18 = Utf8               a
  #19 = Utf8               [Z
  #20 = Utf8               b
  #21 = Utf8               [B
  #22 = Utf8               SourceFile
  #23 = Utf8               Test1Type.java
  #24 = NameAndType        #7:#8          // "<init>":()V
  #25 = Class              #32            // java/lang/System
  #26 = NameAndType        #33:#34        // out:Ljava/io/PrintStream;
  #27 = Class              #35            // java/io/PrintStream
  #28 = NameAndType        #36:#37        // println:(Z)V
  #29 = NameAndType        #36:#38        // println:(I)V
  #30 = Utf8               Test1Type
  #31 = Utf8               java/lang/Object
  #32 = Utf8               java/lang/System
  #33 = Utf8               out
  #34 = Utf8               Ljava/io/PrintStream;
  #35 = Utf8               java/io/PrintStream
  #36 = Utf8               println
  #37 = Utf8               (Z)V
  #38 = Utf8               (I)V
{
  public Test1Type();
    descriptor: ()V
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: invokespecial #1                  // Method java/lang/Object."<init>":()V
         4: return
      LineNumberTable:
        line 1: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   LTest1Type;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
         0: iconst_1
         1: newarray       boolean
         3: dup
         4: iconst_0
         5: iconst_1
         6: bastore
         7: astore_1
         8: iconst_1
         9: newarray       byte
        11: dup
        12: iconst_0
        13: iconst_1
        14: bastore
        15: astore_2
        16: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        19: aload_1
        20: iconst_0
        21: baload
        22: invokevirtual #3                  // Method java/io/PrintStream.println:(Z)V
        25: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        28: aload_2
        29: iconst_0
        30: baload
        31: invokevirtual #4                  // Method java/io/PrintStream.println:(I)V
        34: return
      LineNumberTable:
        line 5: 0
        line 6: 8
        line 8: 16
        line 9: 25
        line 10: 34
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      35     0  args   [Ljava/lang/String;
            8      27     1     a   [Z
           16      19     2     b   [B
}
SourceFile: "Test1Type.java"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1020657.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式开发会成为下一个Java吗?

今日话题&#xff0c;嵌入式开发会成为下一个Java吗&#xff1f;答案是否定的。嵌入式开发岗位通常属于制造业&#xff0c;特别是电器、机械、装备、航空航天等“智能制造”领域&#xff0c;属于重资产行业&#xff0c;相对稳定&#xff0c;不像互联网那样灵活。如果你有兴趣进…

FastDFS修改文件存储目录

修改下面文件&#xff0c;相关参数为1&#xff0c;则最终只保留1个目录&#xff0c;目录为00/00。 vi /etc/fdfs/storage.conf vi /storage.conf vi /fastdfs-5.11/conf/storage.conf

【Java|golang】337. 打家劫舍 III---树上最大独立集

详细视频: link 除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦察之后&#xff0c;聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连的房子在同一天晚上被打劫 &#xff0c;房屋将自动报警。 给定二叉树的 roo…

在线文件二维码制作技巧,支持多种文件格式

怎么把一个文件放到二维码中呢&#xff1f;在日常工作中&#xff0c;使用办公文件多以word、excel、ppt等格式的文件为主&#xff0c;那么怎么把这些格式的文件生成二维码使用是很多小伙伴关注的一个问题。那么就让小编来给大家分享一招&#xff0c;通过浏览器来在线制作二维码…

上传项目到github上

在github上先创建一个空仓库 在github上新建一个仓库&#xff0c;点击你的头像&#xff0c;然后在出来的侧边栏选择 Your repositories 点击New创建一个新的仓库&#xff0c;即repository 输入你的仓库名称&#xff0c;选择public 或者 private. 尽量不要勾选README 如果你的…

微信小程序环境搭建

一、微信开发者工具 1. 微信公众平台注册小程序 注册类型选择‘个人’即可&#xff0c;‘企业’需要公司相关信息&#xff08;企业信用代码、法人信息等&#xff09;。 若只是学习阶段&#xff0c;忽略这步&#xff0c;使用测试号即可。 注册成功后&#xff0c;在‘开发’-…

【任务调度框架】「分析技术指南」带你一同盘点一下常用的任务调度框架的方案和原理开发指南

带你一同盘点一下常用的任务调度框架的方案和开发指南 任务调度JDK原生任务调度Java.Util — Timer&#xff08;单线程&#xff09;/ TimerTask&#xff08;任务调度&#xff09;Java.Util.Concurrent — 任务调度线程池 Spring任务调度机制Quartz任务调度机制简单的使用流程Tr…

精品SpringCloud图书馆管理系统-微服务-分布式

《[含文档PPT源码等]精品基于SpringCloud实现的图书馆管理系统的设计与实现-微服务-分布式》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;springcloud JDK版本&…

【力扣-每日一题】337. 打家劫舍 III

class Solution { public:pair<int,int> dfs_rob(TreeNode *root){//如果为根节点if(rootnullptr)return {0,0};auto [l,l_n]dfs_rob(root->left);auto [r,r_n]dfs_rob(root->right);int ol_nr_nroot->val;//当前节点偷&#xff0c;所获得的利益,子节点不能偷in…

第二章 交换基础

目录 2.1 交换机概述 2.1.1 交换机的定义 2.1.2 交换机的接口 2.1.3 交换机的互连方式 2.1.3.1 级联 2.1.3.2 堆叠 2.1.4 交换机工作原理 2.1.4.1 转发 2.1.4.2 过滤 2.1.4.3 扩散 2.1.4.4 广播 2.1.4.5 源地址学习 2.1.5 交换机的作用 2.2 交换机作用仿真 2.2.…

Excel 通过条件格式自动添加边框

每录入一次数据就需要手动添加一次边框&#xff0c;非常麻烦&#xff0c;这不是我们想要的。 那么有没有办法&#xff0c;在我们录入数据后&#xff0c;自动帮我们加上边框呢&#xff1f; 选中要自动添加边框的列&#xff0c;然后按箭头流程操作 ↓ ↓ ↓ ↓

基于DSPACE功率平衡理论的并联有源电力滤波器模型(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

python如何操作mysql数据库

目录 python操作mysql数据库 怎么提高效率 注意事项 总结 Python 是一种流行的编程语言&#xff0c;它提供了许多库和工具来操作 MySQL 数据库。在 Python 中&#xff0c;你可以使用诸如 pymysql、mysql-connector-python、SQLAlchemy 等库来与 MySQL 数据库进行交互。这些…

微信公众号小说系统源码 漫画系统源码 可对接微信公众号 APP打包 对接个人微信

源码描述&#xff1a;修复版掌上阅读小说源码_公众号漫画源码可以打包漫画app ■产品介绍 掌上阅读小说源码支持公众号、代理分站支付功能完善强大的小说源码&#xff0c;公众号乙帅读者&#xff0c; 可以对接微信公众号、APP打包。支持对接个人微信收款。 ■产品优势 1新…

解决Permission is not allowed后基于Ubuntu23.04安装配置docker与docker-compose

参考&#xff1a;Docker官网-Install Docker Engine on Ubuntu 一、 Install using the Apt repository 1.1 Set up Docker’s Apt repository 1.1.1 Add Docker’s official GPG key # Add Dockers official GPG key: sudo apt-get updatesudo apt-get install ca-certifi…

【AI视野·今日Sound 声学论文速览 第六期】Mon, 18 Sep 2023

AI视野今日CS.Sound 声学论文速览 Mon, 18 Sep 2023 Totally 1 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Audio-Visual Active Speaker Extraction for Sparsely Overlapped Multi-talker Speech Authors Junjie Li, Ruijie Tao, Zexu Pan, Meng…

解决express服务器接收post请求报错:“req.body==> undefined“

现象如下&#xff1a; 解决办法&#xff1a;在代码中加入body-parser解析 const bodyParser require("body-parser"); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); 参考&#xff1a; How to fix "req.body undefined&q…

buuctf-[极客大挑战 2019]HardSQL

很久没做sql了。。 打开这题&#xff0c;还想拿sqlmap跑&#xff0c;但是没跑出来&#xff0c;要手注了 先用万能密码登了一下 回显&#xff0c;是有爆东西的 然后就想到先用bp fuzz字典跑一下 就看到等号被过滤了&#xff0c;要用like来过滤 然后就去搜了很多用like过滤的…

北工大汇编题——分支程序设计

题目要求 信息检素程序设计&#xff1a;在数据区&#xff0c;有9个不同的信息&#xff0c;编号 0-8&#xff0c;每个信息包括20 个字符。从键盘接收 0-8 之间的一个编号&#xff0c;然后再屏幕上显示出相应编号的信息内容&#xff0c;按“q”键退出 完整代码 DATAS SEGMENTn0…

2023 Google 开发者大会:将大型语言模型部署到你的手机

在2022年末&#xff0c;不到半年时间&#xff0c;各家大语言模型的发展如雨后春笋&#xff0c;截至2023年9月&#xff0c;全球总共有接近100个大语言模型&#xff0c;可谓是百花齐放 显而易见&#xff0c;大语言模型凭借出色的AI对话能力&#xff0c;已经逐渐深入各个行业 20…