Java虚拟机自动内存管理

简介: 生活规律告诉我们,在享受便利的同时一般都会付出巨大的代价,如果你在享受了便利的同时,还没有为此付出代价,不是说明没有,只是还没到付出的时候。试问,有哪个Java系统架构师不懂Java虚拟机?纵观Java程序员的发展历程,又有多少人是卡在了Java虚拟机之上。

生活规律告诉我们,在享受便利的同时一般都会付出巨大的代价,如果你在享受了便利的同时,还没有为此付出代价,不是说明没有,只是还没到付出的时候。试问,有哪个Java系统架构师不懂Java虚拟机?纵观Java程序员的发展历程,又有多少人是卡在了Java虚拟机之上。所以如果你还没有感觉到为此付出代价,说明你已经Java虚拟机的糖衣炮弹所击中,且被毒害之深。Java的自动内存管理就是这样,像毒药一样,一旦上瘾就很难戒掉,而且会沉迷于此。而正确的做法就是了解其原理,拿到尚方宝剑,当虚拟机不好好为你提供服务时,拿出宝剑,以便立刻制服他。而此尚方宝剑的锻造需要经历巨大磨难,唯以毅力坚定者方能铸成。

Java的内存管理主要两部分,一部分是Java的内存分配,另外一部分是内存的回收。对于这部分内容的了解,首先必须了解清楚Java虚拟机的内存结构。如果对内存结构不熟悉的朋友可以看关于《Java虚拟机的内存结构》这篇文章。我们知道内存可以分为5大块区域,从自动内存管理的角度,线程独占区的内存是比较容易进行管理的,线程创建就要分配这些区域,线程的销毁这些区域也就释放了,因此我们这里主要讨论的主要是关于堆内存和方法区内存的管理。在之前的文章中也提到了虚拟机规范中并没有对方法区这块内存做太多的限制,而且是作为堆内存的一个逻辑部分。下面就分别从内存的分配与内存的回收两个方面来了解Java虚拟机的内存管理。

内存分配,内存的分配相比较内存的回收要简单一些,一般有几个原则:

 1.对象首先在Eden区域分配。
 2.大对象直接进入到老年代。
 3.多次存活的对象分配到老年代中。
 4.内存分配担保。
 5.逃逸分析与栈上分配。

内存回收,这部分涉及的内容就比较多了,首先是内存回收所用到的算法,比如标记对象为垃圾对象的引用计数法以及可达性分析法。在比如垃圾收集算法标记清除算法,复制算法,标记整理算法以及分代收集算法等等。这些理论知识积累了之后就到垃圾收集器,垃圾收集器是执行垃圾回收的具体实现,垃圾收集器有很多,不同的垃圾收集器的适用场景不同,关注点也不同,在不同的环境下选择合适的垃圾收集器并指定合适的参数是一个系统架构师必备的能力。这样对于内存的回收就达到标准了。总结一下主要的内容

 0.垃圾对象判断算法
 1.垃圾回收算法
 2.垃圾收集器

好了,到这里关于java内存管理所需要知识点就都列到这里了,如果你对Java的自动内存管理比较感兴趣,可以观看《深入理解Java虚拟机》这套视频,这里详细的讲解了上面的所有的知识点。

目录
相关文章
|
6天前
|
存储 Java 编译器
Java内存区域详解
Java内存区域详解
18 0
Java内存区域详解
|
16天前
|
缓存 算法 Java
Java内存管理与调优:释放应用潜能的关键
【4月更文挑战第2天】Java内存管理关乎性能与稳定性。理解JVM内存结构,如堆和栈,是优化基础。内存泄漏是常见问题,需谨慎管理对象生命周期,并使用工具如VisualVM检测。有效字符串处理、选择合适数据结构和算法能提升效率。垃圾回收自动回收内存,但策略调整影响性能,如选择不同类型的垃圾回收器。其他优化包括调整堆大小、使用对象池和缓存。掌握这些技巧,开发者能优化应用,提升系统性能。
|
存储 安全 算法
深入剖析JVM内存管理与对象创建原理
JVM内存管理,JVM运行时区域,直接内存,对象创建原理。
37 2
|
20天前
|
存储 缓存 Java
金石原创 |【JVM盲点补漏系列】「并发编程的难题和挑战」深入理解JMM及JVM内存模型知识体系机制(1)
金石原创 |【JVM盲点补漏系列】「并发编程的难题和挑战」深入理解JMM及JVM内存模型知识体系机制(1)
34 1
|
12天前
|
缓存 安全 Java
Java并发编程进阶:深入理解Java内存模型
【4月更文挑战第6天】Java内存模型(JMM)是多线程编程的关键,定义了线程间共享变量读写的规则,确保数据一致性和可见性。主要包括原子性、可见性和有序性三大特性。Happens-Before原则规定操作顺序,内存屏障和锁则保障这些原则的实施。理解JMM和相关机制对于编写线程安全、高性能的Java并发程序至关重要。
|
20天前
|
缓存 Java C#
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
57 0
|
2天前
|
存储 缓存 监控
Java内存管理:垃圾回收与内存泄漏
【4月更文挑战第16天】本文探讨了Java的内存管理机制,重点在于垃圾回收和内存泄漏。垃圾回收通过标记-清除过程回收无用对象,Java提供了多种GC类型,如Serial、Parallel、CMS和G1。内存泄漏导致内存无法释放,常见原因包括静态集合、监听器、内部类、未关闭资源和缓存。内存泄漏影响性能,可能导致应用崩溃。避免内存泄漏的策略包括代码审查、使用分析工具、合理设计和及时释放资源。理解这些原理对开发高性能Java应用至关重要。
|
6天前
|
存储 前端开发 安全
JVM内部世界(内存划分,类加载,垃圾回收)(上)
JVM内部世界(内存划分,类加载,垃圾回收)
32 0
|
17天前
|
Java
java中jar启动设置内存大小java -jar 设置堆栈内存大小
java中jar启动设置内存大小java -jar 设置堆栈内存大小
11 1
|
20天前
|
监控 网络协议 NoSQL
java线上排查OOM内存溢出
java线上排查OOM内存溢出
19 0