当前位置: 首页 > news >正文

活字格能开发企业网站吗百度如何建设自己的网站

活字格能开发企业网站吗,百度如何建设自己的网站,官网和门户网站的区别,免费wordpress申请目录 1.自动垃圾回收介绍1.C/C的内存管理2.Java的内存管理3.垃圾回收的对比 2.方法区的回收方法区的回收 – 手动触发回收 3.堆回收1.引用计数法2.可达性分析算法 1.自动垃圾回收介绍 1.C/C的内存管理 ⚫ 在C/C这类没有自动垃圾回收机制的语言中,一个对象如果不再…

目录

  • 1.自动垃圾回收介绍
    • 1.C/C++的内存管理
    • 2.Java的内存管理
    • 3.垃圾回收的对比
  • 2.方法区的回收
    • 方法区的回收 – 手动触发回收
  • 3.堆回收
    • 1.引用计数法
    • 2.可达性分析算法

在这里插入图片描述

1.自动垃圾回收介绍

1.C/C++的内存管理

⚫ 在C/C++这类没有自动垃圾回收机制的语言中,一个对象如果不再使用,需要手动释放,否则就会出现内存泄漏。我们称这种释放对象的过程为垃圾回收,而需要程序员编写代码进行回收的方式为手动回收。
⚫ 内存泄漏指的是不再使用的对象在系统中未被回收,内存泄漏的积累可能会导致内存溢出。在这里插入图片描述

2.Java的内存管理

⚫ Java中为了简化对象的释放,引入了自动的垃圾回收(Garbage Collection简称GC)机制。通过垃圾回收器来对不再使用的对象完成自动的回收,垃圾回收器主要负责对堆上的内存进行回收。其他很多现代语言比如C#、Python、Go都拥有自己的垃圾回收器。在这里插入图片描述

3.垃圾回收的对比


自动垃圾回收
自动根据对象是否使用由虚拟机来回收对象
• 优点:降低程序员实现难度、降低对象回收bug的可能性
• 缺点:程序员无法控制内存回收的及时性


手动垃圾回收
由程序员编程实现对象的删除
• 优点:回收及时性高,由程序员把控回收的时机
• 缺点:编写不当容易出现悬空指针、重复释放、内存泄漏等问题


2.方法区的回收

在这里插入图片描述
⚫ 线程不共享的部分,都是伴随着线程的创建而创建,线程的销毁而销毁。而方法的栈帧在执行完方法之后就会自动弹出栈并释放掉对应的内存。


在这里插入图片描述


⚫ 方法区中能回收的内容主要就是不再使用的类。
判定一个类可以被卸载。需要同时满足下面三个条件:
1、此类所有实例对象都已经被回收,在堆中不存在任何该类的实例对象以及子类对象。
在这里插入图片描述

2、加载该类的类加载器已经被回收。
在这里插入图片描述

3、该类对应的 java.lang.Class 对象没有在任何地方被引用在这里插入图片描述

方法区的回收 – 手动触发回收

⚫ 如果需要手动触发垃圾回收,可以调用System.gc()方法。
⚫ 语法: System.gc()
⚫ 注意事项:
调用System.gc()方法并不一定会立即回收垃圾,仅仅是向Java虚拟机发送一个垃圾回收的请求,具体是否需要执行垃圾回收Java虚拟机会自行判断


⚫ 方法区中能回收的内容主要就是不再使用的类。
判定一个类可以被卸载。需要同时满足下面三个条件:
1、此类所有实例对象都已经被回收,在堆中不存在任何该类的实例对象以及子类对象。
2、加载该类的类加载器已经被回收。
3、该类对应的 java.lang.Class 对象没有在任何地方被引用。

3.堆回收

如何判断堆上的对象可以回收?
Java中的对象是否能被回收,是根据对象是否被引用来决定的。如果对象被引用了,说明该对象还在使用,不允许被回收在这里插入图片描述
循环引用
在这里插入图片描述

如何判断堆上的对象没有被引用?
常见的有两种判断方法:引用计数法和可达性分析法。

1.引用计数法

  • 引用计数法会为每个对象维护一个引用计数器,当对象被引用时加1,取消引用时减1

引用计数法的优点是实现简单,C++中的智能指针就采用了引用计数法,但是它也存在缺点,主要有两点:

  • 1.每次引用和取消引用都需要维护计数器,对系统性能会有一定的影响
  • 2.存在循环引用问题,所谓循环引用就是当A引用B,B同时引用A时会出现对象无法回收的问题。在这里插入图片描述

查看垃圾回收日志
⚫ 如果想要查看垃圾回收的信息,可以使用-verbose:gc参数。
⚫ 语法: -verbose:gc
在这里插入图片描述

2.可达性分析算法

  • Java使用的是可达性分析算法来判断对象是否可以被回收。可达性分析将对象分为两类:垃圾回收的根对象(GC Root)和普通对象,对象与对象之间存在引用关系。
  • 下图中A到B再到C和D,形成了一个引用链,可达性分析算法指的是如果从某个到GC Root对象是可达的,对象就不可被回收。

在这里插入图片描述
哪些对象被称之为GC Root对象呢?
⚫ 线程Thread对象。
在这里插入图片描述
⚫ 系统类加载器加载的java.lang.Class对象。
在这里插入图片描述
⚫ 监视器对象,用来保存同步锁synchronized关键字持有的对象。
在这里插入图片描述
⚫ 本地方法调用时使用的全局对象。

http://www.yayakq.cn/news/517094/

相关文章:

  • 商城网站是免费开吗2022楼市最新消息
  • 高级网站设计师手写代码篇广东人才网官方网站招聘信息
  • 顺义网站建设公司长沙市网站建设公司
  • 企业微网站哪个版本好网站建设公司江苏
  • 郑州网站建设 李浩网站备案号密码找回
  • 网站积分解决方案微信公众号预约
  • 做车展的网站河南网站建设公司
  • 专做西餐的网站专业团队高清图片
  • 网站的标签修改号wordpress
  • 网站推广服务器怎么选北京网站建设公司费用浩森宇特
  • 深圳网站建设服务代码快速学习网站建设
  • 怎么查网站关键词排名珠海网站建设搭建
  • 做网站购买空间多少钱做设计用哪个素材网站
  • 网站换了域名怎么开发手机app软件
  • 专注网站基础优化开普网站建设公司
  • 海城seo网站排名优化推广seo网站培训优化怎么做
  • 怎么给一个网站做seo大学生网站开发总结报告
  • 甘肃再就业建设集团网站wordpress网页版入口
  • 一件代发48个货源网站做的比较好的二手交易网站
  • 中英文外贸网站模版网页制作三巨头
  • 做网站怎么租个域名成都视频剪辑哪家培训机构好
  • 青岛建设网站制作wordpress怎么让文章页新窗口打开
  • wordpress免费网站模板下载母婴网站建设初衷
  • 好用的网站建设dedecms网站布局的模版修改方法
  • 创建网站企业做篮球网站用的背景图
  • 购买帝国cms做网站代理一键制作视频的软件
  • php程序员网站开发建设微信小程序怎么做会员卡
  • 做义工旅行有哪些网站《高性能网站建设指南》
  • 虚拟主机网站公司广告墙设计
  • 广州城市建设档案馆网站网站怎么做h5支付