当前位置: 首页 > news >正文

JAVA今日面经(一)

1.Java中如何排查内存溢出

1.1内存不足的核心原因

java中内存溢出的原因有两个,JVM堆/非堆内存分配不足,或内存泄漏使可用内存被耗尽,我们需要定位内存消耗大项,和区分内存是泄露还是真的不足

1.2内存为什么会泄露

内存泄露的本质是本来被GC回收的对象被意外持有引用,导致无法回收一直占用内存,最终导致可用内存越来越少,常见场景有静态集合类持有对象引用,长生命周期对象持有段生命周期对象引用,未关闭的IO/连接/监听器,缓存使用不当,线程未停止等

1.3排查步骤

1.3.1确认内存泄漏

通过工具观察堆内存各区域(Eden、Survivor、Old Gen)的使用情况,判断是否存在内存无法释放的情况

分析GC日志,查看Full GC频率,耗时以及内存释放情况。

1.3.2抓取内存快照,即JVM堆在某一时刻的完整镜像

1.3.3分析内存快照

通过工具分析快照,定位泄露对象:

识别异常对象,查看是否有对象数量异常,或者生命周期异常

查看引用链,查看是否有对象被意外劫持导致无法被回收

1.4常用工具

jps:查看进程ID

jstat:实时监控JVM内存和GC状态

jmap:生成堆快照,查看对象分布

jconsole/jvisualvm:图形化工具

2.HashMap的底层原理了解吗?

HashMap是基于红黑树+链表+数组的哈希表实现,用于存储键值对(key—value),其核心原理如下:

2.1哈希计算与扰动处理

当插入或查询数据时,使用key.hashcode()方法获取哈希值,并赋值给一个变量h

h ^ (h >>> 16):将高 16 位和低 16 位做异或运算,把高位信息混入低位,减少哈希碰撞概率

2.2索引定位

使用(n-1)&hash获取bucket下标,效率比取模高

2.3冲突处理

若桶节点为空,直接放入节点

若存在节点,则逐个比较,若equals()相等则覆盖,若不等于则放到链表尾部

当单个桶内节点数>8&&数组容量>=64时,链表转为红黑树

2.4扩容机制

默认初始容量为16,负载因子0.75

当元素超过阈值16*0.75,数组变成2倍,并且重新分配节点

用(node.hash&oldCap)判断留在原位置还是i+oldCap

http://www.jsqmd.com/news/490795/

相关文章:

  • 发电机组并网技术研究
  • 工业物联网百科全书
  • 立创开源广场自动签到脚本V1.1
  • KMP算法之 next 数组的计算
  • 净水器行业的下一步:从卖设备到卖服务
  • 「OpenClaw 实战全攻略」:从打造 Second Brain 到服务器自愈,20+ 真实落地场景解析
  • 欧洲十家运营商联手对抗星链:一场关于天空的“地缘保卫战”
  • 第六讲:OpenClaw+Deepseek+飞书低成本安装龙虾指南(最新)
  • SceneV:基于Vue3与ThingsBoard的高性能低代码组态可视化解决方案
  • 底部填充胶 (Underfill) 怎么选?AI 算力芯片与 CoWoS 先进封装导热用胶白皮书—37W/m·K 高导热与 13ppm 极低 CTE :峻茂芯片级应力管理指南
  • 高级java每日一道面试题-2025年8月27日-基础篇[LangChain4j]-如何审计 LLM 的输入输出?
  • 2025_NIPS_Transformer brain encoders explain human high-level visual responses
  • Select、Poll、Epoll详解:核心区别与实战用法
  • coding plan vs token
  • 高级java每日一道面试题-2025年8月28日-业务篇[LangChain4j]-如何使用 LangChain4j 实现智能投研助手?需要处理哪些金融数据源?
  • LeetCode Hot100(66/100)——118. 杨辉三角
  • Qt进程间通信
  • LeetCode Hot100(68/100)——198. 打家劫舍
  • 【LLM进阶-Agent】13.function call vs mcp vs skills
  • 2025_NIPS_EgoExoBench: A Benchmark for First- and Third-person View Video Understanding in MLLMs
  • 告别绘图软件!Paperxie AI 科研绘图:10 次免费额度,让理工科论文可视化一步到位
  • Tower I3C Host Adapter 使用范例 (20)
  • 【C++】左值引用、右值引用
  • CS二开之睡眠混淆(五)BeaconGate,UDRL,Sleepmask组合拳
  • AI新范式 02|拆解世界模型:它是如何理解物理规律的?
  • WebRTC QoS方法之NetEQ在流量卡弱网应用下失效
  • Java基础-1
  • 2025_NIPS_Scaling RL to Long Videos
  • 【Dv3Admin】FastCRUD MD编辑器操作
  • open claw安装在windows wsl中教程