Java面试题解答:JVM内存管理、GC算法和JVM选项
需积分: 0 105 浏览量
更新于2024-06-11
收藏 34KB DOCX 举报
"JVM 面试题知识点"
**Java 内存泄漏**
Java 中确实存在内存泄漏的可能性,例如自行实现堆载的数据结构时可能会出现内存泄露。内存泄露是指程序中已经不再需要的对象却不能被垃圾回收器回收,导致内存的浪费。
**Java 数据类型长度**
在 Java 中,int 类型变量的长度是一个固定值,与平台无关,都是 32 位。无论是在 32 位还是 64 位的 Java 虚拟机中,int 类型的长度都是相同的。
**垃圾回收器 Serial 与 Parallel**
Serial 和 Parallel 都是 Java 垃圾回收器的两种模式。它们之间的主要区别是 Serial 收集器是默认的复制收集器,执行 GC 时只有一个线程,而 Parallel 收集器使用多个 GC 线程来执行。都将引起 stop-the-world。
**WeakReference 与 SoftReference**
WeakReference 和 SoftReference 都是 Java 中的引用类型,都是为了提高 GC 和内存的效率。WeakReference 一旦失去最后一个强引用,就会被 GC 回收,而软引用虽然不能阻止被回收,但是可以延迟到 JVM 内存不足的时候。
**JVM 选项 -XX:+UseCompressedOops**
-XX:+UseCompressedOops 是 JVM 的一个选项,当你将应用从 32 位的 JVM 迁移到 64 位的 JVM 时,由于对象的指针从 32 位增加到了 64 位,因此堆内存会突然增加,差不多要翻倍。这也会对 CPU 缓存(容量比内存小很多)的数据产生不利的影响。通过使用压缩 OOP,可以节省一定的内存。
**判断 JVM 是 32 位还是 64 位**
可以检查某些系统属性如 sun.arch.data.model 或 os.arch 来获取该信息。
**32 位 JVM 和 64 位 JVM 的最大堆内存**
理论上说,32 位的 JVM 堆内存可以到达 2^32,即 4GB,但实际上会比这个小很多。不同操作系统之间不同,如 Windows 系统大约 1.5GB,Solaris 大约 3GB。64 位 JVM 允许指定最大的堆内存,理论上可以达到 2^64,这是一个非常大的数字,实际上你可以指定堆内存大小到 100GB。甚至有的 JVM,如 Azul,堆内存到 1000G 都是可能的。
2023-06-07 上传
2024-05-23 上传
2023-05-20 上传
2023-08-22 上传
2024-03-07 上传
2023-07-25 上传
2023-09-18 上传
2023-06-01 上传
心是凉的
- 粉丝: 29
- 资源: 1844
最新资源
- 天池大数据比赛:伪造人脸图像检测技术
- ADS1118数据手册中英文版合集
- Laravel 4/5包增强Eloquent模型本地化功能
- UCOSII 2.91版成功移植至STM8L平台
- 蓝色细线风格的PPT鱼骨图设计
- 基于Python的抖音舆情数据可视化分析系统
- C语言双人版游戏设计:别踩白块儿
- 创新色彩搭配的PPT鱼骨图设计展示
- SPICE公共代码库:综合资源管理
- 大气蓝灰配色PPT鱼骨图设计技巧
- 绿色风格四原因分析PPT鱼骨图设计
- 恺撒密码:古老而经典的替换加密技术解析
- C语言超市管理系统课程设计详细解析
- 深入分析:黑色因素的PPT鱼骨图应用
- 创新彩色圆点PPT鱼骨图制作与分析
- C语言课程设计:吃逗游戏源码分享