SunJDK1.5 GC优化:组合使用与内存管理策略
需积分: 10 11 浏览量
更新于2024-08-18
收藏 1.03MB PPT 举报
"GC—组合使用-sun_GC回收机制及内存等优化"
Java垃圾收集(GC)是自动内存管理的一部分,旨在识别并回收不再使用的对象,以防止内存泄漏并优化性能。在Java Hotspot虚拟机中,有多种垃圾收集器可供选择,每种都有其特定的优缺点和适用场景。
1. **新生代GC方式**:
- **-XX:+UseSerialGC**:这是最简单的垃圾收集器,执行新生代的垃圾回收时,整个过程是串行的,适合轻负载应用。
- **-XX:+UseParNewGC**:与串行GC类似,但在新生代使用多线程进行垃圾回收,提高了并行性,适用于多CPU环境。
2. **旧生代和持久代GC方式**:
- **-XX:+UseParallelGC**(PS GC):这是并行GC的一种,用于旧生代,使用多线程进行垃圾回收,提高效率。
- **-XX:+UseParallelOldGC**:扩展了并行GC,用于整个老年代,包括压缩整理。
- **-XX:+UseConcMarkSweepGC**:并发标记清除GC,主要针对老年代,尽可能减少停顿时间。
3. **GC策略组合**:
- 当发生`Concurrent Mode Failure`时,会切换到串行GC。
- 当发生`Promotion Failed`时,也会采用串行GC。
- 不支持的组合包括:-XX:+UseParNewGC与-XX:+UseParallelOldGC,以及-XX:+UseParNewGC与-XX:+UseSerialGC。
4. **内存结构**:
- **JVM堆**:分为年轻代(包括Eden和两个Survivor区)、老年代,根据不同的GC策略进行管理。
- **JVM方法区/永久代(-XX:PermSize, -XX:MaxPermSize)**:存储类信息、常量、静态变量等,JDK 8后被元空间(Metaspace)取代。
- **本地方法栈/线程栈**:每个线程有自己的栈,用于存储方法调用信息,包括局部变量、操作数栈和栈帧。
- **JVM方法栈**:存放Java方法的调用信息。
- **PC寄存器**:记录当前线程的下一条指令地址。
5. **内存分配**:
- **堆上分配**:大部分对象在Eden区分配,少数直接分配在老年代,使用TLAB(Thread Local Allocation Buffer)优化分配速度。
- **栈上分配**:基本类型和通过逃逸分析后不涉及其他线程的局部变量。
- **堆外分配**:例如通过DirectByteBuffer或Unsafe类,但不推荐,因为管理复杂且可能导致内存碎片。
6. **垃圾回收的判断标准**:
- Hotspot使用可达性分析,对象如果不可达则视为垃圾。
- 引用类型包括Strong、Soft、Weak、Phantom,它们在Full GC时有不同的处理策略。
7. **内存优化**:
- 对于98%的临时对象,Sun Hotspot使用分代收集,新生代快速回收,老年代采用更复杂的策略,如标记-清除或标记-压缩。
理解这些GC机制及其组合对于优化Java应用的性能至关重要,尤其是在高并发场景下,正确配置GC策略可以避免OutOfMemoryError并提升系统响应速度。通过监控和调整JVM参数,如-Xms, -Xmx, -XX:PermSize, -XX:MaxPermSize等,可以有效地管理和优化内存使用。
2021-10-28 上传
2020-03-27 上传
2023-07-28 上传
2023-05-16 上传
2023-06-09 上传
2023-05-16 上传
2023-06-10 上传
2023-05-16 上传
花香九月
- 粉丝: 27
- 资源: 2万+
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜