Java基础面试题

2023-11-13

怎么理解栈、堆?堆中存什么?栈中存什么?

栈是运行时的单位,而堆是存储的单位。
 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、放在哪儿。
 
 堆中存的是对象。栈中存的是基本数据类型和堆中对象的引用。一个对象的大小是不可估计的,或者说是可以动态变化的,但是在栈中,一个对象只对应了一个4btye的引用(堆栈分离的好处:))。

为什么不把基本类型放堆中呢?

因为其占用的空间一般是1~8个字节——需要空间比较少,而且因为是基本类型,所以不会出现动态增长的情况——长度固定,因此栈中存储就够了。
可以这么说,基本类型和对象的引用都是存放在栈中,而且都是几个字节的一个数,因此在程序运行时,他们的处理方式是统一的。但是基本类型、对象引用和对象本身就有所区别了,因为一个是栈中的数据一个是堆中的数据。最常见的一个问题就是,Java中参数传递时的问题。

如何设置堆栈的大小?

java -Xmx512m -Xmx512m … //-Xmx 设置堆最大值 , -Xms设置堆初始值。

-Xss 2m 设置栈的大小。

一个空Object对象的占多大空间?

new一个Object对象占用8+16=24字节(64位JDK),8个字节的引用和16字节的堆内存占用
new一个Object对象占用4+8=12字节(32位JDK),4个字节的引用和8字节的堆内存占用

java 对象的结构?

参考原文地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为什么 java 对象按照8字节的倍数分配?

其目的是 数据对齐(alignment),它允许以一些空间为代价加快内存访问。如果数据未对齐,则处理器需要在加载内存后进行一些转换才能访问它。
此外,垃圾回收简化(并加快)最小分配单元的大小。
Java不需要8字节(64位系统除外),但由于32位体系结构是创建Java时的常态,因此Java标准中可能需要4字节对齐。

Java中对象的引用?

强引用
弱引用
软引用
虚引用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java基础面试题 的相关文章

  • 在 JTable 中移动行

    我使用 MVC 模式 并且有一个如下所示的 JTable List
  • 如何在 JFace 的 TableViewer 中创建复选框?

    我创建了一个包含两列的 tableViewer 我想将其中一列设为复选框 为此 我创建了一个 CheckBoxCellEditor 但我不知道为什么它不起作用 名为 tableName 的列显示其值正常 色谱柱规格如下 String COL
  • AES 加密 Java/plsql

    我需要在Java和plsql DBMS CRYPTO for Oracle 10g 上实现相同的加密 解密应用程序 两种实现都工作正常 但这里的问题是我对相同纯文本的加密得到了不同的输出 下面是用于加密 解密过程的代码 Java 和 PLS
  • 在Windows上安装Java 11 OpenJDK(系统路径问题)

    Java 11 最近发布了 众所周知 这个版本没有安装文件 当然 要在没有安装程序的情况下安装 Java 我将系统设置 PATH 和 JAVA HOME 设置为解压缩 Java 11 的文件夹的地址 根据对类似问题的已接受回复建议 唯一的事
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • HDFS:使用 Java / Scala API 移动多个文件

    我需要使用 Java Scala 程序移动 HDFS 中对应于给定正则表达式的多个文件 例如 我必须移动所有名称为 xml从文件夹a到文件夹b 使用 shell 命令我可以使用以下命令 bin hdfs dfs mv a xml b 我可以
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • Spring Data 与 Spring Data JPA 与 JdbcTemplate

    我有信心Spring Data and Spring Data JPA指的是相同的 但后来我在 youtube 上观看了一个关于他正在使用JdbcTemplate在那篇教程中 所以我在那里感到困惑 我想澄清一下两者之间有什么区别Spring
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 如何在 Maven 中显示消息

    如何在 Maven 中显示消息 在ant中 我们确实有 echo 来显示消息 但是在maven中 我该怎么做呢 您可以使用 antrun 插件
  • Windows 上的 Nifi 命令

    在我当前的项目中 我一直在Windows操作系统上使用apache nifi 我已经提取了nifi 0 7 0 bin zip文件输入C 现在 当我跑步时 bin run nifi bat as 管理员我在命令行上看到以下消息 但无法运行
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • 如何修复“sessionFactory”或“hibernateTemplate”是必需的问题

    我正在使用 Spring Boot JPA WEB 和 MYSQL 创建我的 Web 应用程序 它总是说 sessionFactory or hibernateTemplate是必需的 我该如何修复它 我已经尝试过的东西 删除了本地 Mav
  • KeyPressed 和 KeyTyped 混淆[重复]

    这个问题在这里已经有答案了 我搜索过之间的区别KeyPressedand KeyTyped事件 但我仍然不清楚 我发现的一件事是 Keypressed 比 KeyTyped 首先被触发 请澄清一下这些事件何时被准确触发 哪个适合用于哪个目的
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class

随机推荐

  • 专升本数学——极限与连续(二)笔记

    一 无穷大量与无穷小量 1 定义 无穷小量 如果 lim f x 0 则称 f x 是此极限条件下的无穷小量 本质 以 0 为极限的函数 x 2 是 x gt 0 时的无穷小量 无穷大量 如果 lim f x 无穷 则称 f x 是此极限条
  • 详解grep(一)grep基础、语法格式、常用选项与退出状态码的案例解析

    目录 一 GREP基础 1 1 grep的全称 1 2 grep语法格式 二 grep常用选项 2 1 长短选项的说明 2 2 显示常用信息 2 3 控制匹配模式的选项 2 4 控制输出内容的选项 2 5 控制输出行前缀的选项 2 6 控制
  • java学习笔记——JDBC 中 ResultSet、ResultSetMetaData配置对象的属性、批处理

    使用ResultSet ResultSetMetaData操作数据表 SELECT public void test1 1 获取连接 Connection conn null PreparedStatement ps null 4 执行 S
  • SpeechSynthesisUtterance 语音合成使用 文字语音播报

    一 关于HTML5语音Web Speech API HTML5中和Web Speech相关的API实际上有两类 一类是 语音识别 Speech Recognition 另外一个就是 语音合成 Speech Synthesis 这两个名词听上
  • ESP32(MicroPython) 编码器电机闭环控制

    本人最近查找资料时 发现ESP32上的使用MicroPython的编码器电机相关程序较少 闭环控制程序都是Pyboard上的 与ESP32不完全兼容 本人通过micropython编程 esp32 drv8833 霍尔编码器 micropy
  • 八大排序汇总

    目录 1 插入排序 2 希尔排序 3 选择排序 4 堆排序 5 冒泡排序 6 快速排序 总体思想 1 左右指针法 2 挖坑法 3 前后指针法 4 时间复杂度与三数取中 5 小区间优化 6 针对所有数据重复的优化 7 非递归实现快排 8 稳定
  • 《我在大学挺好的》之——选择了计算机专业

    大家好 我是小鱼儿 Hello 各位铁汁们 今天咱不聊技术 谈我是为什么选择计算机专业 同时聊聊我的最近一年的经历 以及我为啥要写博客 大家完全可以把这篇文章看作是一次闲谈 哈哈 目录 我为啥要选择计算机专业 我最近半年经历了什么 我的大学
  • 【hw1】b站刘二大人,第八讲课后题Titanic

    pre 代码没啥新意 很多人都分享过了 主要想记录一下自己遇到的bug以及收获 bug 1 RuntimeError mat1 and mat2 shapes cannot be multiplied 32x5 and 6x3 nn lin
  • docker启动MYSQL8并挂载数据目录

    1 创建需要docker挂载的数据目录 mkdir p datah mydata mysql conf mkdir p datah mydata mysql data mkdir p datah mydata mysql log mkdir
  • 解析 global-metadata.dat 文件_自己动手做简历解析工具

    当我还是一名大学生的时候 我很好奇自动提取简历信息是如何工作的 我将准备各种格式的简历 并上传到招聘网站 以测试背后的算法是如何工作的 我想自己尝试建一个 因此 在最近几周的空闲时间里 我决定构建一个简历解析器 一开始 我觉得很简单 只是用
  • 备战数学建模42-缺失值和异常值的处理方法(攻坚战6)

    在数据建模中 对给出的数据进行预测处理是很重要的 当然一般考虑有归一化或者规范化等方法对数据进行预处理 这都是在数据完整和没有异常的情况下 需要考虑的 当数据量非常大的时候 往往容易出现数据缺失或者异常的现象 如果数据有确实或者有异常值 我
  • windows xp 驱动开发(七)WDK源码 UsbSamp例子的编译及使用

    转载请标明是引用于 http blog csdn net chenyujing1234 参考文章 http msdn microsoft com zh cn library windows hardware ff544747 欢迎大家提出意
  • Ubuntu android adb环境变量配置方法AndroidStudio安装教程

    UbuntuT android adb环境变量配置方法 https wenku baidu com view 61d31d4ef6335a8102d276a20029bd64793e6275 html AndroidStudio安装教程 u
  • file_operations 结构体

    file operations 结构体中的成员函数是字符设备驱动程序设计的主体内容 这些函数实际会在应用程序进行 Linux 的 open write read close 等系统调用时最终被调用 file operations 结构体目前
  • 辐射骚扰测试软件,电磁兼容EMC测试

    1 什么是辐射 RE 测试 辐射发射 Radiated Emission 测试是测量EUT通过空间传播的辐射骚扰场强 可以分为磁场辐射 电场辐射 前者针对灯具和电磁炉 后者则应用普遍 另外 家电和电动工具 AV产品的辅助设备有功率辐射发射的
  • JAVA为什么只有一个public_浅谈为什么一个Java源文件中只能有一个public类?

    第一 只有一个public类 浅谈为什么一个java源文件中只能有一个public类 1 每个编译单元 文件 只能有一个public 类 这么做的意思是 每个编译单元只能有一个公开的接口 而这个接口就由其public 类来表示 2 java
  • 20.9.7 项目开发总结报告

    项目开发总结报告 项目总结最后价值的东西是经验 教训的总结 项目开发总结报告的编制 根据GB T 8567 2006的规定 项目总结报告应包含以下几个部分的内容 1 引言 标识 系统概述 文档概述 2 引用文件 引用文档的编号 标题 修改版
  • Coding and Paper Letter(六十四)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 资源整理 1 Coding 1 交互式瓦片编辑器 tile playground 2 R语言包autokeras autokeras的R接口 autokeras是一个开源的
  • aix date 脚本_AIX下取前一天时间

    AIX的默认dtae命令是不支持 d参数的 导致大家写脚本很痛苦 没法简单取得前一天的时间 下面有简单方式可以取得 YESTERDAY TZ aaa24 date Y m d echo YESTERDAY 或者是 bin sh TZ TZ
  • Java基础面试题

    怎么理解栈 堆 堆中存什么 栈中存什么 栈是运行时的单位 而堆是存储的单位 栈解决程序的运行问题 即程序如何执行 或者说如何处理数据 堆解决的是数据存储的问题 即数据怎么放 放在哪儿 堆中存的是对象 栈中存的是基本数据类型和堆中对象的引用