JVM-GC-什么是垃圾

JVM-GC-什么是垃圾

前言

所谓垃圾其实是指,内存中没用的数据;没有任何引用指向这块内存,或者没有任何指针指向这块内存。没有的数据应该被清除,垃圾的处理其实是内存管理问题。

JVM虽然不直接遵循冯诺依曼计算机体系架构,但极其相似,像是一台小型计算机。

一台计算机运行程序的流程大概是这样的:操作系统先将程序加载(load)至内存中,并产生一个进程;CPU在内存中读取指令集并执行;在CPU执行期间需要用到内存中的数据,因此在CPU执行期间内存是必须的;

JVM是执行时,是通过不停的压栈弹栈执行指令的,如果需要内存中数据的时候是通过将引用地址压栈到内存中来获取内存中数据的。栈空间是线程独享,而堆空间是线程不独享的。栈空间在弹栈后释放,而堆空间不会;因此JVM存在内存管理的问题。

内存管理常见问题

内存泄露与内存溢出

内存泄露是指,内存中的数据没有任何引用或者说没有任何指针指向该空间,即垃圾数据;

内存溢出是指内存空间不够,程序无法运行,当内存泄露过多后就会导致内存溢出;

野指针

野指针是指指针指向位置的数据被其他线程释放了,甚至是被其他线程重新占用,导致指针指向的位置是一个不确定的变量;

不同语言的内存管理

  1. c/c++是通过手动方式管理内存的,如C中的free()函数,C++中的delete函数。极其难管理,很容以出现内存泄露、野指针等问题;
  2. java/Python/Golang等后来是通过垃圾回收器自动回收垃圾,再也不需要程序员来手动管理内存。
  3. 还有一些语言是不需要手动管理内存也不需要GC,如rust,它是通过一个内存空间只能一个引用的方式实现的。

手动管理内存的语言麻烦且容易出问题,但线程全部用来执行业务;而使用GC的语言,不需要考虑内存管理的问题,但是需要消耗线程来处理垃圾,效率低;

寻找垃圾的方式

  1. reference count(引用计数法):即通过记录引用的数量或指针的数量来判断是否为垃圾,但是会出现循环引用,导致内存泄露;
  2. root searching: 根可达寻找,从引用的头开始遍历,没有被遍历到的数据为垃圾,JVM中根的定义:
  3. 线程变量
  4. 静态变量
  5. 常量池变量
  6. JNI指针

清除垃圾的方式

  1. mark-sweep:标记清除,弊端是内存碎片化严重
  2. copying:拷贝清除,只占用一半的内存空间,将没有没清除的数据copy到另外一般内存中。弊端是内存地址发生变化,占用内存
  3. mark-compact:标记压缩,在情况垃圾的同时将内存整理。弊端占用CPU

对象在JVM中是如何进行分配内存的

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/713488.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SAP HCM 员工供应商过账详解 财务角度理解员工供应商过账

导读 INTRODUCTION 员工供应商:在某些情况下,特别是在大型组织或集团公司中,员工可能同时扮演着供应商的角色,为组织内部的其他部门或子公司提供产品或服务。例如,一个技术部门的员工可能为销售部门提供技术支持或定制开发服务。,还有一种,就是员工在公司挂账的欠款,每…

SpringBoot如何自定义启动Banner 以及自定义启动项目控制台输出信息 类似于若依启动大佛 制作教程

前言 Spring Boot 项目启动时会在控制台打印出一个 banner,下面演示如何定制这个 banner。 若依也会有相应的启动动画 _ooOoo_o8888888o88" . "88(| -_- |)O\ /O____/---\____. \\| |// ./ \\||| : |||// \/ _||||| -:- |||||- \| | \\…

GraogGNSSLib学习

GraogGNSSLib学习 程序编译环境版本项目编译结果问题 程序编译 GraphGNSSLib 环境版本 程序开源是在ubuntu16.04-kinetic环境跑通的,但是我的环境是UBUNTU20.04,所以,先进行了ROS的安装,因为我的系统是ubuntu20.04所以&#xf…

Hadoop 2.0:主流开源云架构(四)

目录 五、Hadoop 2.0访问接口(一)访问接口综述(二)浏览器接口(三)命令行接口 六、Hadoop 2.0编程接口(一)HDFS编程(二)Yarn编程 五、Hadoop 2.0访问接口 &am…

基于WPF技术的换热站智能监控系统13--控制设备开关

1、本节目的 本次工作量相对有点大,有点难度,需要熟悉MVVM模式,特别是属性绑定和命令驱动,目标是点击水泵开关,让风扇转动或停止,风扇连接的管道液体流动或静止。 ,具体对应关系是:…

计算机专业:黄金时代是否依旧?

计算机专业:黄金时代是否依旧? 随着2024年高考落幕,数百万高三学生将面临人生中的重要抉择:选择大学专业。在这个关键节点,计算机相关专业是否仍是“万金油”的选择?在过去的几十年里,计算机科…

【SpringBoot】SpringBoot:构建实时聊天应用

文章目录 引言项目初始化添加依赖 配置WebSocket创建WebSocket配置类创建WebSocket处理器 创建前端页面创建聊天页面 测试与部署示例:编写单元测试 部署扩展功能用户身份验证消息持久化群组聊天 结论 引言 随着实时通信技术的快速发展,聊天应用在现代We…

曲线拟合 | 二次B样条拟合曲线

B 样条曲线拟合实例:能平滑化曲线 1. 实例1 为MASS包中mcycle数据集。它测试了一系列模拟的交通车事故中,头部的加速度,以此来评估头盔的性能。times为撞击时间(ms),accel为加速度(g)。首先导入数据&#…

为什么选择 ABBYY FineReader PDF ?

帮助用户们对PDF文件进行快速的编辑处理,同时也可以快速识别PDF文件里的文字内容,并且可以让用户们进行文本编辑,所以可以有效提升办公效率。 ABBYY-ABBYY Finereader 15 Win-安装包:https://souurl.cn/OY2L3m 高级转换功能 ABBY…

你焦虑了吗

前段时间,无意间在图书馆看到一本书《认知觉醒》,书中提到了焦虑的相关话题,从焦虑的根源,焦虑的形式,如何破解焦虑给了我点启示,分享给一下。 引语: 焦虑肯定是你的老朋友了,它总像…

如何进行文件映射

创建一个文件WebMvcConfig package com.itheima.config;import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.…

达梦基于什么数据库?

达梦数据库(DM Database)是中国自主研发的高性能关系型数据库管理系统。它并不是基于其他现有的数据库系统,而是完全自主开发的。这种独立开发使其具有很多独特的特点和优势,特别是在安全性、性能优化、适应中国本地化需求等方面。…

VCG显示——汉字,数字,图像

详细的介绍资料: 【从零开始走进FPGA】 玩转VGA http://www.cnblogs.com/spartan/archive/2011/08/16/2140546.html 【FPGA实验】基于DE2-115平台的VGA显示_vga接口实验 de2-115-CSDN博客 【FPGA】VGA显示文字、彩条、图片——基于DE2-115-CSDN博客 一.VCG原理 1.1…

Ubuntu安装部署

Ubuntu安装部署 一、Ubuntu概述1、Ubuntu介绍2、Ubuntu特点 二、Ubuntu和Centos的区别1、Centos2、Ubuntu3、Centos和Ubuntu区别 三、安装Ubuntu-Server1、Ubuntu官网2、创建新的机子3、创建名称以及虚拟机在磁盘上的位置4、Ubuntu初始化和安装 四、安装Ubuntu1、开始安装2、安…

FM全网自动采集聚合影视搜索源码

源码介绍 FM 全网聚合影视搜索(响应式布局),基于 TP5.1 开发的聚合影视搜索程序,本程序无数据库,本程序内置P2P 版播放器,承诺无广告无捆绑。片源内部滚动广告与本站无关,谨防上当受骗,资源搜索全部来自于网络。 环境…

DAY3-力扣刷题

1.罗马数字转整数 13. 罗马数字转整数 - 力扣(LeetCode) 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L …

C/C++:指针用法详解

C/C:指针 指针概念 指针变量也是一个变量 指针存放的内容是一个地址,该地址指向一块内存空间 指针是一种数据类型 指针变量定义 内存最小单位:BYTE字节(比特) 对于内存,每个BYTE都有一个唯一不同的编号…

微软OneDrive简介:特点、应用场景、使用方法、注意事项

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 6月16日,星期日

每天一分钟,知晓天下事! 2024年6月16日 星期日 农历五月十一 1、 国家网信办:将涉网络暴力违法情形记入用户信用记录。 2、 卫健委:超三成3岁以下婴幼儿家庭有入托需求,托育服务关注度持续上升。 3、 大陆对台134项关…

Keysight 是德 N9343C 手持式频谱分析仪

Keysight 是德 N9343C 手持式频谱分析仪 主要特性与技术指标 功能 • 1 MHz ~ 13.6 GHz(可调谐至 9 kHz) • 内部前置放大器高达 13.6 GHz • 内置 GPS 接收机和 GPS 天线 • 内置跟踪发生器 性能 • -144 dBm 典型的显示平均噪声电平&a…