读一个文件,忘记关闭了流,你在操作系统里对这个文件的写,删除等操作就会报错,告诉你这个文件被某个进程占用,这是为什么呢? java是从c++设计来的,但是无论是C语言还是C++,都需要手动释放内存,java不需要。 因为java在对象的引用被消除之后,正常情况下,内存资源是会被垃圾回收。 使用完IO ...
分类:
其他好文 时间:
2020-04-07 15:38:18
阅读次数:
137
java可以自动进行垃圾收集,c++需要手动释放内存,这个功能将程序员解放出来,能将更多的注意力放在需要实现的业务上,这也是java相对c++的一个巨大优势,jvm有哪些垃圾收集算法呢?标记清除算法:算法分为标记和清除两个阶段,首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象从图中可以看出这种算法的缺点在于,垃圾被回收以后造成了大量不连续的内存碎片。碎片太多可能会导致以后需要分配
分类:
编程语言 时间:
2020-01-23 11:01:41
阅读次数:
85
内存泄漏与垃圾回收机制 什么是内存泄漏? 有些语言(比如c语言)必须手动释放内存,程序员负责内存管理。这很麻烦,所以大多数语言提供自动内存管理,减轻程序员的负担,这被称为"垃圾回收机制"。 javascript垃圾回收机制原理: 1、标记清除 2、引用计数 ...
分类:
其他好文 时间:
2019-12-03 23:15:22
阅读次数:
118
链表(下):如何轻松写出正确的链表代码? 技巧一:理解指针或引用的含义 对指针的理解:将某个变量赋值给指针,实际上就是讲这个变量地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。 例如:p->next=q。这行代码是说,p结点的next指针存储了 ...
分类:
编程语言 时间:
2019-10-26 22:58:12
阅读次数:
91
1.概念 1.1什么是GC 垃圾(Garbage)就是程序需要回收的对象,如果一个对象不在被直接或间接地引用,那么这个对象就成为了「垃圾」,它占用的内存需要及时地释放,否则就会引起「内存泄露」。有些语言需要程序员来手动释放内存(回收垃圾),有些语言有垃圾回收机制(GC),例如我正在学习的Java语言 ...
分类:
其他好文 时间:
2019-09-09 14:39:04
阅读次数:
127
标签: C++ 1. 类的初始化 几种不同初始化的区别: A a;和A *a=new A()的区别,示例程序如下: 执行结果如下,通过A a1("gqx")形式初始化的对象,在程序结束的时候会自动回收内存,调用析构函数,而通过new方式初始化的对象需要手动释放内存。 修改主程序如下后: 执行结果如下 ...
分类:
编程语言 时间:
2019-07-01 21:34:52
阅读次数:
154
内存泄露 内存泄漏memory leak 是指那些本应该回收(不再使用)的内存对象无法被系统回收的现象。在c++中需要程序猿手动释放内存对象,所以在C++中更容易存在内存泄漏。java引入了自动回收机制,使得在C++中令人头疼的内存问题得到了有效的改善,但这并不意味着java程序员不关注内存,因为垃 ...
分类:
其他好文 时间:
2018-11-12 17:35:20
阅读次数:
177
首先是操作系统将代码程序加载到内存中 然后将内存分为4个区 栈区,程序的局部变量区,函数传递的参数,由编译器自动进行内存资源的释放。 堆区,动态内存申请,如果不手动释放内存,则这块内存不会进行析构。 全局区,静态区,常量区(字符串存放的位置),程序结束后,有操作系统释放 代码区,存放函数体的二进制代 ...
分类:
编程语言 时间:
2018-08-02 12:52:23
阅读次数:
165