【垃圾回收】背景知识
一 背景知识
在讲解垃圾回收具体技术之前,本节将介绍Java运行时内存划分和垃圾回收的背景知识。
1.1 什么是垃圾回收?
计算机程序运行时的数据和代码都是存储在内存中,cpu到内存中取出相应的指令和数据完成计算,并将结果写入内存。但内存不是无限大的,虽然有扩大实际使用内存的技术,如虚拟内存,但内存总是有限的,并不能存放无限多的数据和代码。内存是宝贵的,因此我们希望内存上存放的数据都是有用的,不需要没用的数据占据着内存。占据着内存的没用数据就是垃圾,将这些没用的数据从内存中移除就是垃圾回收。
C语言中使用 malloc来申请内存,当数据没用时,需要使用free 来人为地释放内存,这种方式需要程序员自己进行垃圾回收。使用这种方式进行垃圾回收的一个很明显问题就是繁琐,程序员要在每次使用完数据时主动释放,如果忘记释放了,这就导致了内存泄漏的问题。手动进行垃圾回收还有其他问题,如Double free问题,当你第一次free之后,就将这块内存归还给系统了,系统有可能马上就将它分配给了其它程序,你再free就发生了非法内存读写。
由于手动进行垃圾回收存在各种问题,将垃圾
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
Java面试必问JVM考点精讲 文章被收录于专栏
“挨踢”行业行情日益严峻,企业招聘的门槛也随之越来越高,大厂hc少之又少。 庞大的知识体系下,不知道学什么、怎么学? 面试高频考点是什么、怎么回答才能得到面试官的青睐? 作为后端求职者,在Java的道路上越走越宽。 本专刊则针对Java面试考点上,精讲JVM知识点,为大家的大厂求职路保驾护航! 针对如今校招痛点,深入详解JVM知识考点,列出高频真题并详细解答!探索JVM精髓!

