Java内存区域
JVM垃圾回收
- 内存泄漏:指的是程序在运行过程中动态分配的内存,在
使用完毕后未能正确释放
,导致这部分内存无法再次被利用。即使这些对象已经不再需要,由于仍然存在未解除的引用,垃圾回收器无法回收它们 - 内存溢出:指程序运行时申请的内存量超过了JVM堆或非堆内存的限制,导致
内存不足
以完成操作。当JVM尝试分配新对象或扩展现有对象大小时,若没有足够的可用内存,并且垃圾收集也无法提供足够的空间,就会抛出OutOfMemoryError - 内存碎片:指在内存分配和释放的过程中,由于分配算法和释放模式的原因,导致内存中出现了许多小的、
不连续的空闲块
。这些空闲块单独来看是可用的,但由于它们不是连续的,对于较大对象的分配来说却无法使用 - 区别总结
根本原因:内存泄漏是由程序逻辑缺陷
引起的,而内存溢出可能是由于资源限制或配置不当
引起的
表现形式:内存泄漏表现为应用程序逐渐消耗更多的内存
,而内存溢出则直接导致程序崩溃
解决方法:内存泄漏需要通过代码审查和优化
来修复;内存溢出可以通过调整JVM参数、优化算法或架构设计
来缓解
类文件结构详解 
类加载
过程详解
类加载器详解(重点)
最重要的JVM参数总结
JDK监控和故障处理工具总结
JVM线上问题排查和性能调优案例
JMM
参考:(Java的内存模型 JMM)[https://blog.youkuaiyun.com/OTTOkongbai/article/details/144395828]
参考:
视频:黑马JVM
课程:JVM 核心技术 32 讲
课程:深入浅出 Java 虚拟机
《深入理解 Java 虚拟机》
《Java 性能权威指南》