Java内存分配管理知识点

Java内存分配策略为静态存储区、栈内存区、堆内存区

  • 静态存储区:主要存放呗static声明的变量或者常量,该区域在编译时候经常分配完成并且在运行期间都是存在的可被全局使用。
  • 栈内存区:用于存放局部变量,即在执行某方法时方法体内所声明的基本类型或对象的引用地址,当方法执行结束后这些局部变量持有内存将被自动释放。因为栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
  • 堆内存区:又称动态内存分配,主要存放那些运行时 new 出来对象实体的内存,这部分内存内存用 Java 垃圾回收机制负责回收管理。

Java回收机制GC

java new 出来的对象实体存储在堆内存中,那么这些内存是如果被释放的呢? 那就是通过 Java 的回收机制 GC 来管理。
GC 释放或者说回收内存的原则是当这个实体不再被使用时回收释放,因为 GC 随时需要监控每个对象的状态,包括对象的申请、引用、被引用、赋值等,GC 都需要进行监控。所以GC给程序员带来管理内存方便的同时也给 JVM 增加负担。
GC是如何判断那些内存需要回收的请看示意图:
网络图片非原创

Java 内存泄漏

Java 内存泄漏是指在有向图中是可达的,但是该对象是无用的却不能被 GC 回收释放。也就是说程序在内存中为 new 出来的对象申请了一块内存,但是该对象在程序中是用不到无用的。GC 又不会释放该对象内存。这种情况可以判定为内存泄漏,这些对象不会被GC所回收,然而它却占用内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值