jvm的垃圾回收和内存
垃圾回收:
对象的创建是我们程序员主导的,但是却没有与之相对应的delete方法来删除我们用完的对象,释放这些我们已经不需要再使用的对象的内存空间,gc:垃圾回收机制:指的就是JVM自带的一种释放无用对象占用的内存的一种手段
程序员的辅助手段:
将引用改变为指向其他的对象(或NULL),暗示JVM ,这个对象已经没有引用指向,可以被回收;
在方法内创建局部变量,利用弹栈的特点,使得局部变量失效;
理解:
当我们从代码中无需再使用某个对象时,它即为无用,所占看见应被回收;
垃圾回收机的出现可以有效的防止内存溢出和内存泄漏;
gc怎么知道该对象是否可以被回收,需了解的两种方法: 引用计数 - 对象引用遍历
注意的是:JVM主要的活动区域为 堆内存
引用计数:
早期的JVM使用的方法,会储存对象的所有引用数,会控制这个引用数的多少,在引用数为0的时候,则 视为可以进行垃圾回收
对象引用遍历:
现在大部分JVM采用的方法,从一组对象开始,沿着该对象涉及到的对象形成一个树 ( 自己理解 ),通过递归的方式,确定可达对象,不可达对象就会被视为不再需要,将其进行标记作为垃圾收集,释放对应的内存,但是释放的内存都是离散的,不是连续的,不足于装载新的对象,很多GC会有优化操作,会重新组织内存中的对象,并进行压缩,形成连续的内存空间供使用。
引用对象的强度:
引用对象:包装了我们实际需要的对象,使我们可以直接维护对引用对象的直接引用
可以理解为:给某个对象的引用进行了一层增强,使其拥有了其他的状态,我们可以根据他的状态进行辨别
对象在没有任何引用指向的时候才会被当作垃圾回收,如果我们想对有引用指向的对象做垃圾回收处理,这个 时候就涉及到了引用对象的概念,引用对象的强度将决定垃圾回收器的行为,注意:我们普通使用的引用都是强度最大的引用,强度可分为一下几种:
强可达:普通的引用
软可达:
弱可达:
虚可达:
不可达: 没有引用指向
对象的可达性状态会触发垃圾回收期作出相应的行为:
软可达对象可能会任凭垃圾回收器去回收;
若可达对象将会被垃圾回收器回收;
虚可达对象并不是真正的可达,介于可达和不可达之间,为什么说可达呢,因为它的存在可以防止对象在显式清除虚可达引用之前被回收,为什么又说他是不可达呢,因为无法通过PhantomReference访问其指称对象, 其get方法总是返回null.
jvm的垃圾回收和内存的更多相关文章
- JVM、垃圾回收、内存调优、常见參数
一.什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写.JVM是一种用于计算设备的规范.它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现 ...
- JVM学习02:GC垃圾回收和内存分配
JVM学习02:GC垃圾回收和内存分配 写在前面:本系列分享主要参考资料是 周志明老师的<深入理解Java虚拟机>第二版. GC垃圾回收和内存分配知识要点Xmind梳理 案例分析1-(G ...
- JVM的垃圾回收机制详解和调优
JVM的垃圾回收机制详解和调优 gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存.java语言并不要求jvm有gc,也没有规定gc如何工作.不过常用的jvm都有gc,而且大多数gc都 ...
- JVM常见垃圾回收算法
jdk1.7.0_79 众所周知,Java是一门不用程序员手动管理内存的语言,全靠JVM自动管理内存,既然是自动管理,那必然有一个垃圾内存的回收机制或者回收算法.本文将介绍几种常见的垃圾回收(下文简称 ...
- jvm的垃圾回收算法
一.对象存活判断判断对象是否存活一般有两种方式:1.引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收.此方法简单,无法解决对象相互循环引用的问题.2 ...
- 03 JVM的垃圾回收机制
1.前言 理解JVM的垃圾回收机制(简称GC)有什么好处呢?作为一名软件开发者,满足自己的好奇心将是一个很好的理由,不过更重要的是,理解GC工作机制可以帮助你写出更好的Java程序. 在学习GC前,你 ...
- 【java虚拟机序列】java中的垃圾回收与内存分配策略
在[java虚拟机系列]java虚拟机系列之JVM总述中我们已经详细讲解过java中的内存模型,了解了关于JVM中内存管理的基本知识,接下来本博客将带领大家了解java中的垃圾回收与内存分配策略. 垃 ...
- JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)
相信和小编一样的程序猿们在日常工作或面试当中经常会遇到JVM的垃圾回收问题,有没有在夜深人静的时候详细捋一捋JVM垃圾回收机制中的知识点呢?没时间捋也没关系,因为小编接下来会给你捋一捋. 一. 技术 ...
- jvm详情——3、JVM基本垃圾回收算法回收策略
JVM基本垃圾回收算法回收策略 引用计数(Reference Counting):比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数.垃圾回收时,只用收集计数为0的 ...
随机推荐
- MySQL主主
MySQL双主(主主)架构方案 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果 ...
- 010 Editor 8.0.1 之 逆向分析及注册机编写
前言一.工具及软件介绍二.逆向分析2.1.找到提示错误注册弹窗2.2.分析跳转处代码2.3.=2D 函数分析2.3.1.获取注册码处分析2.3.2.3处分支分析2.3.2.1.9C情况2.3.2.2. ...
- ROS零门槛学渣教程系列(二十)——ROSJAVA和Android
ros wiki地址:http://wiki.ros.org/android 第一步:安装JDK (参考博文:https://blog.csdn.net/Hong_A/article/details/ ...
- 将Windows系统移到另一个硬盘
原先的128GB SSD,给Windows用是够了,最近虚拟机用得多,靠以前的SSD外挂着用,实在有点不爽,就入手一个256GB的,重装系统是个令人头疼的事情,当然不能干.想起来以前另一个机器操作的时 ...
- python3 经典排序方法
1.插入排序: def nsert_sort(list): for i in range(len(list)): for j in range(i): if list[i] < list[j]: ...
- Tigase 发送消息的流程源码分析
XMPP 的<message/>节是使用基本的”push”方法来从一个地方到另一个地方得到消息.因为消息通常是不告知的,它们是一种”fire-and-forget”(发射后自寻目的)的机制 ...
- BZOJ1058或洛谷1110 [ZJOI2007]报表统计
BZOJ原题链接 洛谷原题链接 STL 本题可以直接使用\(\mathtt{STL\ multiset}\)水过去. 因为本题插入数的操作实际上就是将原数列分为\(n\)段,在每一段的末尾插入数,所以 ...
- Pytorch之训练器设置
Pytorch之训练器设置 引言 深度学习训练的时候有很多技巧, 但是实际用起来效果如何, 还是得亲自尝试. 这里记录了一些个人尝试不同技巧的代码. tensorboardX 说起tensorflow ...
- “天龙八步”细说浏览器输入URL后发生了什么
本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务器处理请求: 5.返回响应结果: 6.关闭TCP连接: 7.浏览器解析HTML: 8.浏览器布局渲染: 总结 输 ...
- UI设计学习之工具中的色彩模式分析
图像根据其呈现的颜色样式分为多种色彩模式,常见的为RGB模式.CMYK模式.灰度模式.位图模式和索引模式. RGB模式 这是Photoshop最常用的颜色模式,也称之为真彩色颜色模式,在RGB模式 ...