Java的jvm与gc概述

简介: JVM就是java虚拟机,每一个JVM都包括堆,栈,本地方法栈、方法区,指令计数器及其他隐含寄存器。 堆:负责存储对象实例。 栈:存储基本类型和对象的引用。 方法区:存放着类的静态变量,常亮,类的信息等。 本地方法栈:与栈相类似,只不过存放的是方法。


image.png

1.JVM基础

JVM就是java虚拟机,每一个JVM都包括堆,栈,本地方法栈、方法区,指令计数器及其他隐含寄存器。

堆:负责存储对象实例。

栈:存储基本类型和对象的引用。

方法区:存放着类的静态变量,常亮,类的信息等。

本地方法栈:与栈相类似,只不过存放的是方法。

举例:

String address= "beijing"

此时会向栈中压入一个叫address栈,在堆中开辟一块内存空间存放beijing,其中address存放着beijing这块内存空间的地址。而这样有什么好处呢,当还有另一个对象也叫beijing时我们把内存地址给他就好了,不用额外开辟另一块内存空间了。

2.类的加载

当了解JVM结构之后,就时JVM的运行流程。

image.png

 我们运行程序,就时运行一个个编译好的类,首先类加载器使用二进制的方式先加载类,放于方法区内,然后在堆上新建一个class对象,封装类的数据结构,同时提供接口供方法区调用,在栈中存放着类的声名,这样我们完成了类的加载,然后在经过其处理就可以使用类了。(具体类加载的源码和原理请参考-http://www.cnblogs.com/ityouknow/p/5603287.html)

3.GC

如果内存空间满了改怎么办,JVM提供了GC-也就是垃圾回收机制。当内存溢出自动进行垃圾处理。

 一般都是堆发生垃圾回收。而堆被分为了三部分分别是新生代  ,年老代,持久带,新生代又被分为Eden、Survivor1、Survivor2这三块,当一个对象被新建后会被放入eden中(较大的直接放入年老代中),当eden被存满后会发生minor   GC,此时eden会将内存中不用的空间清除并把剩余的数据放入Survivor1,当下一次eden被存满后,重复上次操作,eden和Survivor1中数据会一起存放进Survivor2中,直到Survivor1或Survivor2存放满,这时会把存放满的Survivor1或Survivor2数据存进年老代中,而当年老代被存满后会发生full  gc此时会清理年老代的内存。

image.png

4.垃圾回收算法

垃圾回收分为三种算法

1.标记-清除

image.png

就时在堆中查找每块内存是否有栈在使用这块堆内存,没有就清理掉,但是这样会产生大量的磁盘碎片。

2.复制

image.png

为了解决第一种问题。把内存分为两部分,把正在使用的内存复制到另一块内存中,不过这样的缺点是需要两倍的空间。

3.标记-整理

image.png

此方法采用了以上两种方法的特点,此方法分为两个阶段

1.标记出没被使用的内存并清除掉。

2.将剩余的内存空间集中到连续的空间上。


相关文章
|
2月前
|
监控 算法 Java
Java虚拟机(JVM)的垃圾回收机制深度解析####
本文深入探讨了Java虚拟机(JVM)的垃圾回收机制,旨在揭示其背后的工作原理与优化策略。我们将从垃圾回收的基本概念入手,逐步剖析标记-清除、复制算法、标记-整理等主流垃圾回收算法的原理与实现细节。通过对比不同算法的优缺点及适用场景,为开发者提供优化Java应用性能与内存管理的实践指南。 ####
|
1月前
|
监控 算法 Java
Java虚拟机(JVM)垃圾回收机制深度剖析与优化策略####
本文作为一篇技术性文章,深入探讨了Java虚拟机(JVM)中垃圾回收的工作原理,详细分析了标记-清除、复制算法、标记-压缩及分代收集等主流垃圾回收算法的特点和适用场景。通过实际案例,展示了不同GC(Garbage Collector)算法在应用中的表现差异,并针对大型应用提出了一系列优化策略,包括选择合适的GC算法、调整堆内存大小、并行与并发GC调优等,旨在帮助开发者更好地理解和优化Java应用的性能。 ####
56 0
|
3天前
|
Oracle Java 关系型数据库
Java基础(一):语言概述
Java基础(一):语言概述
Java基础(一):语言概述
|
11天前
|
存储 监控 算法
Java JVM 面试题
Java JVM(虚拟机)相关基础面试题
|
25天前
|
算法 网络协议 Java
【JVM】——GC垃圾回收机制(图解通俗易懂)
GC垃圾回收,标识出垃圾(计数机制、可达性分析)内存释放机制(标记清除、复制算法、标记整理、分代回收)
|
1月前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。
|
1月前
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####
|
2月前
|
机器学习/深度学习 监控 算法
Java虚拟机(JVM)的垃圾回收机制深度剖析####
本文深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法、性能调优策略及未来趋势。通过实例解析,为开发者提供优化Java应用性能的思路与方法。 ####
63 1
|
2月前
|
Oracle 安全 Java
深入理解Java生态:JDK与JVM的区分与协作
Java作为一种广泛使用的编程语言,其生态中有两个核心组件:JDK(Java Development Kit)和JVM(Java Virtual Machine)。本文将深入探讨这两个组件的区别、联系以及它们在Java开发和运行中的作用。
127 1
|
2月前
|
监控 算法 Java
深入理解Java虚拟机(JVM)的垃圾回收机制
【10月更文挑战第21天】 本文将带你深入了解Java虚拟机(JVM)的垃圾回收机制,包括它的工作原理、常见的垃圾收集算法以及如何优化JVM垃圾回收性能。通过本文,你将对JVM垃圾回收有一个全新的认识,并学会如何在实际开发中进行有效的调优。
70 0

热门文章

最新文章