Java面试必备:内存溢出、对象存活、Error与Exception解析
需积分: 5 66 浏览量
更新于2024-08-04
收藏 9KB TXT 举报
"Java常见基础面试题及答案涵盖了内存溢出、对象创建、垃圾收集、错误与异常分类、hashCode方法的用途以及字符串对象的创建等核心概念。"
1、Java中的内存溢出(OutOfMemoryError)通常是由于Java虚拟机(JVM)在运行时无法分配足够的内存给程序。内存溢出可以发生在不同方面:
- PermGen Space:大量使用jar或class导致类空间不足。解决方法是调整JVM参数XX:PermSize和XX:MaxPermSize,减少jar包和重复加载的类。
- Java Heap Space:过多的对象创建使Java堆内存耗尽。可以通过设置Xms和Xmx参数来调整初始堆大小和最大堆大小,同时检查并消除可能导致大量对象创建的死循环或重复创建。
2、字符串对象的创建:"Strings = "123";" 这行代码如果字符串池中已经有"123",则不创建新对象,否则会在池中创建一个对象。"Strings = new String("123");" 则无论池中是否存在"123",都会在堆中创建一个新的对象。
3、循环引用与垃圾收集:现代JVM通常使用可达性分析算法来确定对象是否可被垃圾收集。即使A和B对象相互引用,只要它们与GC Roots之间没有可达路径,依然会被标记为可回收。
4、Error、Exception和RuntimeException的区别:
- Error:表示系统级的严重问题,例如系统资源耗尽,这类错误通常不期望应用程序捕获。
- Exception:用于表示程序运行时可能出现但不希望立即终止的情况,可以被捕获并处理。Exception分为已检查异常(需要try-catch或在方法上声明)和未检查异常(如RuntimeException及其子类,如NullPointerException、ArithmeticException等)。
5、hashCode方法:该方法用于提供对象的哈希码,主要用于哈希表(如HashMap)中快速定位对象。相同的对象必须具有相同的hashCode,但不同的对象可能有相同的hashCode,这会导致哈希冲突。
6、HashMap和HashSet的使用:hashCode在HashMap中用于确定键值对的存储位置,而在HashSet中用于快速判断元素是否存在,因为相同的元素会有相同的hashCode。
以上是Java基础面试中常见的问题,理解这些概念对于开发者来说至关重要,它们涉及到了内存管理、异常处理、字符串操作和数据结构的基本原理。
2012-08-23 上传
4163 浏览量
124 浏览量
122 浏览量
2024-11-11 上传
2023-03-15 上传
2015-04-13 上传
2017-12-26 上传
166 浏览量
望舒巴巴
- 粉丝: 1509
- 资源: 100
最新资源
- B2C_UQ云商系统 v1.3.1
- FrontEnd:回购协议
- StocksEvolutionApp:python实现的应用程序,使用bokeh来显示和操纵股票图
- Javaweb+mybatis+Springboot+SpringMVC活动拼团项目
- 飞机大战初级版
- 新建文件夹,新建文件夹2,matlab
- personal_portfolio:使用HTML,CSS,JS和AOS创建的个人投资组合网站,用于存储个人项目和文件以显示给朋友,家人和未来的雇主
- RoveClone:罗夫克隆
- Registry Finder(注册表管理)2.53 中文绿色版
- AnchorBooks
- AvalonDock的基本用法
- ATM-MACHINE-CODE:带有纯PYTHON的简单后端ATM代码
- 行业文档-设计装置-高压线路检修作业平台.zip
- html5 canvas模拟的见缝插针小游戏源码
- opentelemetry-指标收集和分布式跟踪框架-Rust开发
- WTAB-Wp-Pnl:我在WordPress中创建设置面板的基本插件