自动内存管理机制

本文是阅读深入理解java虚拟机做的记录

Java 内存区域与内存溢出异常

1.java虽然不用进行new 出对象后的delete/free的操作了,但是有些部分还是需要进行手动操作的, 如文件的close,连接的close等。

   基于jvm的内存回收虽然已经做了大部分工作,但是出现了内存泄露问题,也是比较难以定位的。

2.运行时区域分为:1)方法区 2)堆 3)虚拟机栈 4)本地方法栈 5)程序计数器

  方法区和堆是所有的线程共享的数据区域。

虚拟机栈、本地方法栈和程序计数器属于线程隔离区域

程序计数器:

较小的内存空间,可看做当前线程的执行的字节码的行号指示器。每条线程都需要一个独立的程序计数器,各个线程的计数器是不会相互影响的。

java 虚拟机栈:

             java虚拟机栈也是线程私有的,生命周期也是和线程的生命周期相同。每个方法被执行的时候都会同事创建一个栈帧去存储 局部变量、操作栈、动态链接、方法出口等信息。每一个方法的调用到完成--》对应 栈帧在虚拟机栈的 从入到出的过程。


本地方法栈:和虚拟机栈相似,但是主要执行Native方法的。

java堆:线程共享,唯一目的---》存放对象实例 + 数组。GC的主要作用区域。

方法区:线程共享,类信息、常量、静态变量

运行时常量池:方法区的一部分。(待补充)

OOM:除了程序计数器,其他的运行时区域都会有可能发生这个异常。

java堆溢出:

-Xms 堆的最小值   -Xmx最大值 如果两个值相等,则会限制住对内存的自动扩展。








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值