JVM深入学习(十三)-垃圾回收概念

简介: 垃圾回收概念,为什么需要垃圾回收

1. 垃圾的定义

什么是垃圾?

运行程序中没有任何指针指向的对象

2. 为什么要垃圾回收

  1. 垃圾不回收的情况下,内存空间迟早会被占用完,影响应用程序的正常运行
  2. 垃圾回收可以进行内存碎片整理,保证大空间对象的分配

3. 早期的垃圾回收

在c/c++中都是使用手动垃圾回收的方式进行垃圾回收

具体的说: 使用new申请内存,使用delete回收内存

4. Java的内存管理机制

java使用自动内存管理的方式来对内存进行操作,内存的分配和回收都由java实现,不用开发人员手动分配及回收.

相较于c/c++来说,极大的省略了开发的复杂度,开发人员也无需担心忘记回收内存而导致的内存泄露问题.

可以称java为 (c++)--,减配版的c++,此处的减配意思是 1. 复杂度减小,不用关心内存回收 2. 手动回收相较于自动回收在某种程度上可能会有更好的性能,从这个角度说java是c++的减配版本

5. Java自动内存管理存在的问题

java使用垃圾回收器自动回收垃圾,那么相应的,开发人员对应内存分配和回收的能力就可能变弱,在发生内存泄露/内存溢出问题时,可能无法及时的找到问题

需要借助于一些监控工具,分析java的内存情况.

6. 垃圾回收的工作范围

垃圾回收主要针对堆和方法区

栈只有入栈和出栈操作,不存在垃圾回收,但是存在内存溢出问题

程序计数器不存在垃圾回收也不存在内存溢出问题

垃圾回收的分代机制:

  1. 主要针对新生代 YGC
  2. 较少针对老年代 MinorGC
  3. 基本不针对永久代(元空间) FULLGC

7. 垃圾回收的阶段

垃圾回收分为标记阶段清除阶段

目录
相关文章
|
5月前
|
Arthas 存储 算法
深入理解JVM,包含字节码文件,内存结构,垃圾回收,类的声明周期,类加载器
JVM全称是Java Virtual Machine-Java虚拟机JVM作用:本质上是一个运行在计算机上的程序,职责是运行Java字节码文件,编译为机器码交由计算机运行类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析类加载器的定义:JVM提供类加载器给Java程序去获取类和接口字节码数据类加载器的作用:类加载器接受字节码文件。
490 55
|
10月前
|
监控 算法 Java
Java虚拟机(JVM)垃圾回收机制深度剖析与优化策略####
本文作为一篇技术性文章,深入探讨了Java虚拟机(JVM)中垃圾回收的工作原理,详细分析了标记-清除、复制算法、标记-压缩及分代收集等主流垃圾回收算法的特点和适用场景。通过实际案例,展示了不同GC(Garbage Collector)算法在应用中的表现差异,并针对大型应用提出了一系列优化策略,包括选择合适的GC算法、调整堆内存大小、并行与并发GC调优等,旨在帮助开发者更好地理解和优化Java应用的性能。 ####
243 27
|
5月前
|
缓存 算法 Java
JVM深入原理(八)(一):垃圾回收
弱引用-作用:JVM中使用WeakReference对象来实现软引用,一般在ThreadLocal中,当进行垃圾回收时,被弱引用对象引用的对象就直接被回收.软引用-作用:JVM中使用SoftReference对象来实现软引用,一般在缓存中使用,当程序内存不足时,被引用的对象就会被回收.强引用-作用:可达性算法描述的根对象引用普通对象的引用,指的就是强引用,只要有这层关系存在,被引用的对象就会不被垃圾回收。引用计数法-缺点:如果两个对象循环引用,而又没有其他的对象来引用它们,这样就造成垃圾堆积。
157 0
|
5月前
|
算法 Java 对象存储
JVM深入原理(八)(二):垃圾回收
Java垃圾回收过程会通过单独的GC线程来完成,但是不管使用哪一种GC算法,都会有部分阶段需要停止所有的用户线程。这个过程被称之为StopTheWorld简称STW,如果STW时间过长则会影响用户的使用。一般来说,堆内存越大,最大STW就越长,想减少最大STW,就会减少吞吐量,不同的GC算法适用于不同的场景。分代回收算法将整个堆中的区域划分为新生代和老年代。--超过新生代大小的大对象会直接晋升到老年代。
110 0
|
7月前
|
缓存 监控 算法
JVM简介—2.垃圾回收器和内存分配策略
本文介绍了Java垃圾回收机制的多个方面,包括垃圾回收概述、对象存活判断、引用类型介绍、垃圾收集算法、垃圾收集器设计、具体垃圾回收器详情、Stop The World现象、内存分配与回收策略、新生代配置演示、内存泄漏和溢出问题以及JDK提供的相关工具。
JVM简介—2.垃圾回收器和内存分配策略
|
10月前
|
算法 网络协议 Java
【JVM】——GC垃圾回收机制(图解通俗易懂)
GC垃圾回收,标识出垃圾(计数机制、可达性分析)内存释放机制(标记清除、复制算法、标记整理、分代回收)
|
10月前
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####
|
6月前
|
Arthas 监控 Java
Arthas memory(查看 JVM 内存信息)
Arthas memory(查看 JVM 内存信息)
478 6
|
9月前
|
存储 设计模式 监控
快速定位并优化CPU 与 JVM 内存性能瓶颈
本文介绍了 Java 应用常见的 CPU & JVM 内存热点原因及优化思路。
933 166
|
11月前
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
1831 1