Java面试题解答:JVM内存管理、GC算法和JVM选项
需积分: 0 151 浏览量
更新于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-15 上传
2023-07-09 上传
2023-07-07 上传
2023-07-07 上传
2023-07-08 上传
2024-11-23 上传
2024-11-23 上传
心是凉的
- 粉丝: 30
- 资源: 1844
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析