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基础面试题 的相关文章

随机推荐

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

    一 无穷大量与无穷小量 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基础面试题

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