首页 > 其他分享 >JVM/垃圾回收

JVM/垃圾回收

时间:2024-09-02 22:47:51浏览次数:7  
标签:存储 S0 回收 计数器 GC 垃圾 JVM 线程 方法

Java的垃圾回收模型

一、介绍

  • 分为栈、堆、本地方法栈、程序计数器、方法区

在这里插入图片描述

  • 栈区:主要用来存储局部变量和对象地址

    • 栈区不仅存储局部变量和对象地址,还存储方法调用的上下文信息。
  • 堆区:分为很多个区域,可以存储对象的具体数据等

    • Java 虚拟机中内存最大的一块,是被所有线程共享的,几乎所有的对象实例都在这里分配内存;
  • 本地方法区:一些C++的native方法

    • 用于管理本地方法的调用,里面并没有我们写的代码逻辑,其由native修饰,由 C ++实现。
  • 程序计数器:指向程序当前运行的位置

    • 它是一块很小的内存空间,主要用来记录各个线程执行的字节码的地址,例如,分支、循环、线程恢复等都依赖于计数器。
  • 方法区:存储一些静态方法和变量、类的方法

    • 用于存放已被虚拟机加载的类信息,常量,静态变量等数据。
    • 方法区除了存储类的信息,还包括运行时常量池、编译后的代码等内容。
  • 其中每一个线程在运行的时候,都会开辟一个栈区、本地方法区、程序计数器来私有享用。堆和方法区是共享的。

在这里插入图片描述

  • 大多数情况下基本数据类型是拷贝值、引用数据类型是拷贝地址

二、垃圾回收机制(GC)

  • 三种方法
    1. 标记——清理 缺:内存碎片
    2. 标记——整理 缺:代价大
    3. 赋值 缺:2倍内存

在这里插入图片描述

  • E和S0和S1的比例一般是8:1:1,一般是在E中创建对象,当E存满的时候,把需要清除的打上标记,剩下的拷贝到S0。后面E再满的时候S0和E需要的拷贝到S1中。循环往复,达到一定次数,还没有删除的会认为很长时间不会被删除并存入Old GC中。大的对象也会被存到Old GC中。
  • Young GC典型有ParNew,OldGC一般有CMS,在java9后一般是用G1

标签:存储,S0,回收,计数器,GC,垃圾,JVM,线程,方法
From: https://www.cnblogs.com/cha9/p/18393692

相关文章

  • JVM分区
    Java虚拟机(JVM)在执行Java程序时,将其运行时数据划分到若干不同的内存区域。这些内存区域的管理对Java应用程序的性能和稳定性有着重要影响。JVM的内存区域主要包括以下几部分:1.方法区(MethodArea)用途:存储每一个类的结构信息,例如运行时常量池、字段和方法数据、构造函数和普通方......
  • JSP家庭垃圾分类管理系统21wg8(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景随着城市化进程的加快,生活垃圾产生量急剧增加,其中家庭垃圾占据重要比例。传统的垃圾处理方式已难以适应环保要求,垃圾分类成为解决垃圾......
  • U-Mail垃圾邮件网关:一站式邮件安全防护方案
    在当今的数字化时代,电子邮件已成为企业日常运营中不可或缺的通讯工具。然而,随着电子邮件的广泛应用,垃圾邮件也日益成为困扰企业的一大难题。如何有效防止垃圾邮件入侵,确保企业邮件系统的安全稳定运行,已成为众多企业亟待解决的难题。为了应对这一挑战,U-Mail垃圾邮件网关应运而生,它以......
  • BCB 6.0真的是垃圾么?
    一不留神,看到这个玩意:BCB6.0是垃圾的二十条理由。于是决心废话几句,我只针对他说的那二十条理由,至于后面的关于什么删帖子纭纭,我觉得私人恩怨还是不要跟技术撤上关系比较好。1.IDE经常出现非法操作,有时重起动还会出错,需要重装BCB。有意思的很,很多不太会电脑的朋友问我电脑出现问......
  • JVM入门
    JVM入门本文的目的就是认识JVM认识JVM要从什么方面开始入手呢?我们可以先试着问问自己,如果没有JVM会怎么样?为社么要有JVM?接下来,我就先从Java的跨平台特性开始说起Java的跨平台特性Java设计的初衷就是为了解决一个问题:程序员编写一次程序,就可以在任何提供Java运行时环境的机器上面运......
  • Java虚拟机(JVM)性能调优实战指南
    Java虚拟机(JVM)性能调优实战指南大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!Java虚拟机(JVM)作为Java程序运行的基础,其性能直接影响到Java应用的执行效率。性能调优是Java开发中的一项重要技能,它可以帮助我们提高应用的响应速度和处理能力。本文将......
  • 戴尔xps8940机箱只需要两百块,可否让垃圾佬的主机B格提升一个Level
    戴尔XPS8940机箱只需要两百块,可否让垃圾佬的主机B格提升一个Level戴尔xps8940的机箱只需要200块,看到这个价格之后,体内垃圾佬的基因就被激发了出来,你要知道XPS可是戴尔高端的代名词,那如果我把自己的设备装到这款机箱里面,然后把机箱放在桌面显眼的位置,岂不是吊炸天了?大家......
  • JAVA之JVM入门
    Java虚拟机(JVM)是Java平台的核心部分之一,它为Java程序提供了运行环境。一、历史背景1.SunClassicVM发布时间:1996年重要功能:Java1.0的默认JVM。支持基本的字节码执行。简单的垃圾回收机制。2.HotSpotVM发布时间:1999年重要功能:JDK1.3开始成为默认JVM。引入了......
  • 【JVM】执行引擎、JIT、逃逸分析(一)
    执行引擎、JIT、逃逸分析JVM中的执行引擎是什么?在Java虚拟机(JVM)中,执行引擎(ExecutionEngine)是负责执行Java字节码的核心组件。执行引擎的作用是将Java字节码转换成计算机可以执行的机器码,并实际执行这些机器码。以下是JVM执行引擎的主要职责和组成部分:主要职责:1.......
  • 基于Springboot的城市垃圾分类管理系统
    博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实实在在的写点程序。......