深入JVM虚拟机之什么是堆外内存?什么情况下发生堆外内存溢出或泄露?

堆内内存:

1.一般情况下,一个新的对象创建在JVM内的堆上,并为其分配内存空间。堆空间由JVM垃圾回收器管理,称为堆内内存(on-heap memory)

2.虚拟机会定期对垃圾内存进行回收,有时会进行一次彻底的回收Full GC

3.彻底回收时,垃圾收集器会对所有分配的堆内内存进行完整的扫描,这意味一次垃圾收集对Java 应用造成的影响,跟堆的大小是成正比的,过大的堆会影响 Java 应用的性能

堆外内存:

1.和堆内内存相对应,堆外内存就是把内存对象分配在Java虚拟机的堆以外的内存,这些内存直接受操作系统管理,而不是虚拟机

2.这样能够维护一个较小的堆,在一定程度上减少垃圾回收对应用程序造成的影响,堆外内存也被称为直接内存

3.可以使用NIO包下的DirectByteBuffer进行堆外内存的管理和使用,它会在对象创建的时候就分配堆外内存

                    

堆外内存的优点:

1、保持了一个较小的堆内内存,可以减少垃圾收集对应哟的影响。

2、在使用缓存时,需要消耗一些内存空间来提升速度,使用堆内内存会给虚拟机带来GC压力,使用硬

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JVM内存泄露是指在Java虚拟机中,程序中动态分配的内存对象无法被垃圾回收机制回收,导致内存占用不断增加,最终导致内存耗尽的情况内存泄露内存溢出的一种诱因,但不是唯一因素。内存泄露通常发生在对象不再被程序使用,但由于某些原因(如被GC Root所引用)无法被回收的情况。实际上,一些疏忽或错误的编码习惯可能导致对象的生命周期变得很长甚至与JVM的生命周期一样,这也可以被称为宽泛意义上的"内存泄露"。在Java中,常见的内存泄露情况包括静态集合类中的对象未被正确释放等。要检测内存泄露,可以使用Runtime.getRuntime().freeMemory()方法进行查询。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [jvm内存泄漏](https://blog.csdn.net/weixin_43689480/article/details/96474346)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [JVM内存泄露](https://blog.csdn.net/qq_50876039/article/details/122320924)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [jvm内存泄漏介绍](https://blog.csdn.net/magic_kid_2010/article/details/124173542)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值