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

JVM/垃圾回收

时间:2024-09-03 10:52:06浏览次数:5  
标签:存储 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://blog.csdn.net/2403_86942375/article/details/141832246

相关文章

  • JVM虚拟机
    JVM虚拟机一.简述JVM虚拟机的内存结构JVM内存结构大致分为五个部分,分别为方法区、堆、虚拟机栈、程序计数器、本地方法栈。如下图:1.程序计数器:程序计数器主要作用是记录下一条要执行的二进制字节码指令地址。属于线程私有,不会出现内存溢出。2.虚拟机栈:定义:虚拟机栈内部是......
  • JVM/垃圾回收
    Java的垃圾回收模型一、介绍分为栈、堆、本地方法栈、程序计数器、方法区栈区:主要用来存储局部变量和对象地址栈区不仅存储局部变量和对象地址,还存储方法调用的上下文信息。堆区:分为很多个区域,可以存储对象的具体数据等Java虚拟机中内存最大的一块,是被所有线程......
  • 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。引入了......