GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,
Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,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()在一个优先级很低的线程中执行。

转载于:https://www.cnblogs.com/pypua/articles/8779384.html

【Java面试题】48 GC是什么? 为什么要有GC?相关推荐

  1. Java面试题全集84集系列-(1-XX)

    (1)不要说自己擅长某方面,说自己熟悉或者对某一方面有所研究. java 基础 (2) java 跨平台原理https://www.cnblogs.com/roger-yu/p/5827452.htm ...

  2. Java面试题:GC 是什么? 为什么要有GC?

    一.GC 是什么? 为什么要有GC? 1.GC是垃圾回收的意思 为什么要有GC,因为内存处理这块是开发人员容易出错的地方,忘记或是错误地回收内存,可能会导致程序或者系统不稳定甚至崩溃,所以Java提供 ...

  3. java面试题2019 答案

    Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 Stri ...

  4. Java面试题及答案整理(2022年140道)持续更新

    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~博主已将这些面试题整理到一个网站上,每天更新 Java 面试题,目前有 1万多道 Jav ...

  5. Java面试题大全带答案 110道(持续更新)

    本人发现网上虽然有不少Java面试题大全带答案,但第一未必全,第二未必有答案,第三虽然有答案,但未必能在面试中说,所以在本文里,会不断收集各种面试题,并站在面试官的立场上,给出我自己的答案 如果不背 ...

  6. Java面试题及答案整理( 2022最新版,持续更新)

    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ Java面试永远是程序员迈向成功的第一个门槛,想要面试成功,各种面试题的洗礼是必不可少 ...

  7. Java面试题及答案整理 140道( 2021年持续更新)

    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本人发现网上虽然有不少Java相关的面试题,但第一未必全,第二未必有答案,第三虽然有答 ...

  8. java 字符串乱码_这份Java面试题含答案解析竟然真的让你不用在面试上“如履薄冰”...

    面试题集共分为以下十部分: 一.Core Java: 1 - 95 题1 - 24 页 基础及语法: 1 - 61 题1 - 13 页 异常: 62 - 69 题13 - 15 页 集合: 70 - ...

  9. java 百分比相加_2019年Java面试题基础系列228道(5),快看看哪些你还不会?

    2019年Java面试题基础系列228道 Java面试题(一) 第一篇更新1~20题的答案解析 第二篇更新21~50题答案解析 第三篇更新51~95题答案解析 Java面试题(二) 第四篇更新1~20 ...

  10. java面试题(转载其他人,方便日常看)

    序言 在本篇文章开始之前,我想先来回答一个问题:我为什么要写这样一篇关于面试的文章?原因有三个:第一,我想为每一个为梦想时刻准备着的"有心人",尽一份自己的力量,提供一份高度精华的 ...

最新文章

  1. wordpress 重新生成附件文件名
  2. 史上最全的正则表达式
  3. 翻译 | 关键CSS和Webpack: 减少阻塞渲染的CSS的自动化解决方案
  4. 【TypeScript】通过node-cmd使用代码,执行cmd命令行
  5. 【软考-软件设计师】计算机存储系统
  6. LiveVideoStackCon 专题评审团招募进行中
  7. Android WebView:这是一份全面 详细的WebView学习指南
  8. 第一天:Drools环境搭建配置
  9. Silverlight 2应用程序中XAP文件揭秘
  10. PCI Express Base Specification Revision 3.0 英文手册 免费下载
  11. [Python] 开发一个局域网联机小游戏
  12. 利用sublime3 + xmapp使用服务器调试
  13. 笔记本电脑外接显示器接口类型
  14. 三国杀 中的概率计算 几何分布的期望和方差分析
  15. Windows Server 2012R2 启用网络发现失败
  16. Prometheus入门实践
  17. 在使用angular打包项目的时候 打包老是出错 内存溢出的解决办法
  18. 互联网及相关公司的求职经历分享
  19. 网络爬虫十三-队列处理
  20. 嵌入式学习-----keil的安装

热门文章

  1. [转]启动Tomcat提示:指定的服务未安装
  2. 关于NLPIR应用在KETTLE中的探索
  3. Python 2.7 学习笔记
  4. Mysql不需要身份验证便可远程连接故障
  5. [C#学习]多线程编程——多线程基础
  6. HDU 1052 Tian Ji -- The Horse Racing
  7. Theme、StylesheetTheme设置ASP.NET的样式与主题
  8. 让英文版windows 8支持非Unicode程序的语言方法
  9. PPP协议详细图解实验
  10. js mysql替换_JavaScript_js使用正则实现ReplaceAll全部替换的方法,JS 字符串有replace() 方法。但这 - phpStudy...