Java内存区域

2020-05-21  本文已影响0人  lbcBoy
**句柄 vs 直接指针**
句柄中指向的是到对象实例数据的指针;
直接指针中指向的是对象的实例数据;
他们本质都是指针,使用句柄带来的最大好处就是稳定,使用直接指针速度更快。

**内存溢出 vs 内存泄露**
内存泄漏(memory leak),在大型的、复杂的应用程序中,内存泄漏是常见的问题。
当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,那么对于该进程来说,会因此导致总可用内存的减少,这时就出现了内存泄漏。
尽管优秀的编程实践可以确保最少的泄漏,但是根据经验,当使用大量的函数对相同的内存块进行处理时,很可能会出现内存泄漏。
尤其是在碰到错误路径的情况下更是如此。

一般我们常说的内存泄漏是指堆内存的泄漏。
堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。        
应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,
否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。

总结:**内存泄露就是堆内存分配的对象空间,没有被GC正常回收,导致内存释放不了,最终会导致内存不足,溢出**
上一篇下一篇

猜你喜欢

热点阅读