GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃。

Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 (推荐学习:java课程)

GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc()

Runtime.getRuntime().gc()

Java是由C++发展来的。

它摈弃了C++中一些繁琐容易出错的东西。其中有一条就是这个GC。

写C/C++程序,程序员定义了一个变量,就是在内存中开辟了一段相应的空间来存值。内存再大也是有限的,所以当程序不再需要使用某个变量的时候,就需要释放这个内存空间资源,好让别的变量来用它。

在C/C++中,释放无用变量内存空间的事情要由程序员自己来解决。就是说当程序员认为变量没用了,就应当写一条代码,释放它占用的内存。这样才能最大程度地避免内存泄露和资源浪费。

但是这样显然是非常繁琐的。程序比较大,变量多的时候往往程序员就忘记释放内存或者在不该释放的时候释放内存了。

而且释放内存这种事情,从开发角度说,不应当是程序员所应当关注的。程序员所要做的应该是实现所需要的程序功能,而不是耗费大量精力在内存的分配释放上。

Java有了GC,就不需要程序员去人工释放内存空间。当Java虚拟机发觉内存资源紧张的时候,就会自动地去清理无用变量所占用的内存空间。当然,如果需要,程序员可以在Java程序中显式地使用System.gc()来强制进行一次立即的内存清理。

因为显式声明是做堆内存全扫描,也就是 Full GC,是需要停止所有的活动的(Stop The World Collection),你的应用能承受这个吗?

而其显示调用System.gc()只是给虚拟机一个建议,不一定会执行,因为System.gc()在一个优先级很低的线程中执行。

java中gc是什么_java什么是gc相关推荐

  1. java 中random类使用_Java中的天使和魔鬼:Unsafe类

    我们在看ConcurrentHashMap源码时经常看到Unsafe类的使用,今天我们来了解下Unsafe类. Java是一个安全的编程语言,它能最大程度的防止程序员犯一些低级的错误(大部分是和内存管 ...

  2. java中的分层概念_Java分层概念

    1.JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分?(下面所描述的service层就是biz) 首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对 ...

  3. java中对象的生存期_Java中对象的生存周期

    文章目录 JAVA对象的生存周期 1.创建阶段(Created) 为对象分配内存需要考虑的问题 2.应用阶段(In Use) 3.不可见阶段(Invisible) 4.不可达阶段(Unreachabl ...

  4. java中审核订单流程图_Java 后端横扫阿里、滴滴、美团总结的面试经验!

    这次面试的公司有一点点多,主要是因为毕业后前两份工作找的都很草率,这次换工作就想着,emm,毕业三年了,该找个工作好好沉淀几年了. 先说下这次面试的结果吧: 到 hr 面的:阿里.美团.滴滴.金山云. ...

  5. java gc回收算法_Java基础之GC垃圾回收的历史

    [TOC] 垃圾回收思路: - 发现无用信息对象 - 回收被无用对象占用的内存空间,使该空间可被程序再次使用. > 关键词联想:(**类型**)堆和非堆,(**人类成长**)伊甸园-幸存者乐园- ...

  6. java中的垃圾收集器_Java中的垃圾收集

    java中的垃圾收集器 Garbage collection in java is one of the advance topic. Java GC knowledge helps us in fi ...

  7. java中什么是空指针异常_JAVA中的空指针异常如何处理?

    你这个问题的解决 问题定位: 在堆栈异常信息的第一行就可以定位到是哪里出了空指针,倘若这里不是你写的类,可以往下翻一下,找到你写的类,就是这里出现的空指针. 问题解决: 对一个空对象调用里面的方法或者 ...

  8. java中jframe是什么_java中JFrame是什么

    在java中,JFrame是官方提供的一个类,这个类的主要功能是使用该类可以快速的开发出Java界面应用程序(c/s架构),属于java.swing知识体系:它是屏幕上window的对象,能够最大化. ...

  9. java中的vm自变量_java中JVM虚拟机内存模型详细说明

    java中JVM虚拟机内存模型详细说明 JVM的内部结构如下图: 一个优秀Java程序员,必须了解Java内存模型.GC工作原理,以及如何优化GC的性能.与GC进行有限的交互,有一些应用程序对性能要求 ...

  10. java中引用类型有哪些_java中什么是引用类型

    java中的引用类型是指除了基本数据类型之外的所有类型.java中有四种引用类型,分别是强引用.软引用.弱引用和虚引用.引用类型和原始类型具有不同的特征和用法. Java 提供两种不同的类型:引用类型 ...

最新文章

  1. 虚拟机win7装oracle,win7系统安装Oracle VM VirtualBox虚拟机的操作方法
  2. asp.net定时执行任务-解决应用池回收问题----转载
  3. Ubuntu从零安装 Hadoop And Spark
  4. 流畅的python第一章_《流畅的Python》第一章学习笔记
  5. Asp.Net实例:C# 绘制统计图(三) ——扇形统计图的绘制
  6. boost::asio async_write也不能保证一次发完所有数据 一
  7. 906. 超级回文数
  8. acm 算法 java_有关acm算法的一道java题
  9. libmp3lame的接口使用
  10. 计算机找不管理员,Win7系统鼠标右键找不到“管理员获取所有权”选项怎么办...
  11. 学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业
  12. 第一篇:呼叫中心发展史
  13. LOAM_Livox小结
  14. 腾讯云七月优惠活动云服务器限量秒杀20元起
  15. 看《江山美人》,让我三次笑场
  16. java 变量重名_关于java中变量的重名问题
  17. 【机器学习】机器学习和深度学习概念入门
  18. can接口卡、can卡、usbcan在金龙大巴车BMS上的作用
  19. Word 2013 Bible 免积分下载
  20. 维克设备管理软件 v2.15 通用版 免费

热门文章

  1. ld 无法找到项目符号 链接失败_【Linux】一步一步学Linux——ld命令(256)
  2. ps的初级教程:去痘痘-庞姿姿
  3. 基础篇:6.9)形位公差-检测方法Measurement
  4. 在.net Core中使用StackExchange.Redis 2.0
  5. 【好工具】强烈安利的文献管理软件 Mendeley
  6. MATLAB论文绘图模板与尺寸设置
  7. shopex操作记录
  8. 我的2017年总结-播种学习进阶的一年
  9. 2015-4-11 美术馆 红楼 景山 香山 西单
  10. opencv+python获取摄像头视频流并翻转保存文件