前言
在学习计算机科学时,内存管理是一个非常重要的概念。简单地说,内存是计算机用来存储和访问数据的地方。而内存管理是计算机系统如何分配、使用和管理内存的过程。
为什么要学习内存管理?
1. 高效性:内存管理能够帮助计算机更高效地利用内存。例如,当程序需要更多的内存时,操作系统会将它分配给程序,这样程序就可以存储更多的数据。如果内存没有被正确地管理,计算机可能会因为缺乏可用内存而变得非常慢。
2. 安全性:内存管理也帮助防止了一些安全问题。例如,当一个程序尝试访问它没有权限访问的内存地址时,这可能会导致程序崩溃或者出现其他问题。良好的内存管理可以防止这种情况发生。
3. 稳定性:学习内存管理也有助于了解如何防止和解决一些常见的程序错误,如缓冲区溢出、空指针引用等。
总的来说,学习内存管理可以帮助我们更深入地理解计算机系统的工作原理,以及如何编写更安全、更稳定、更高效的程序。
内存管理方式
内存管理方式分为两种:
1、用户管理:手动malloc/free new/delete 其中C和C++是典型的代表
优点:全部交给用户来做,比较灵活
缺点:会不可避免地出现内存泄漏
2、系统管理:GC机制(垃圾回收机制) 典型的代表有JAVA
优点:完全杜绝了内存泄漏(用户只管使用内存,内存的回收全部由系统自动管理)
缺点:不够灵活
GC机制的原理是所有创建的空间都由一个共同的“父亲”来回收,比如操作系统中的孤儿进程,它的产生是由于父进程没有回收它,它最终会通过系统的1号进程来进行回收;再比如线程的状态分为两种,一种是可结合态(join),通过用户手动调用pthread_join等待释放;另一种是可分离态(detach),它就是交给系统来自动释放。