JVM浅谈

  1. 首先说说JVM的内存模型内存模型图
    其中程序计数器就是记录程序运行到哪儿的秘书一样,记录着程序运行在哪儿了,这里就不多赘述了。
    方法区:存放的主要是类、与类相关的信息如静态的类字段以及常量 堆:存放的主要是对象的实例,new的各种对象就是放在这里
    栈:存放的主要是方法运行时产生的栈帧
    2. 垃圾回收机制(GC) 如何搜索垃圾:主要是有两种算法来分辨搜索垃圾,引用计数法和根搜索法,而因为引用计数法缺点太明显了,如果两个垃圾互相引用那么,他们就不会被检索成垃圾,也就清理不了。所以JVM中采用的是根搜索法,确保能够准确的找到垃圾。
    垃圾找到后肯定也会有合理的清理方案有以下几种:
    2.1标记清除法 优点是速度快,缺点非常致命,会产生大量内存碎片,会出现内存显示充足,可是大文件却存放不下,这就是它,直接标记,并直接清理时留下的隐患
    标记清除法
    2.2分段复制法 在标记清除法的基础上进行二分整理,这样就可以解决内存碎片的问题

    分段复制法
    2.3标记整理法 在分段复制法的基础上进一步整理 标记整理法
    2.4分代收集法 JVM回收的垃圾主要就是堆中的垃圾,因为栈中的内存,在方法执行完之后自动会回收掉,而GC使用的是分代收集法回收把内存空间分为以下区域
    内存分区新生代部分检查回收频率最高,逐级递减,且对不同区域进行不同的策略,已达到最优效果。
    对于回收区域也有划分:
    第一级 Minor GC 小规模(通常是内存充足时)
    第二级 Major GC 中等规模(通常是内存被占用了一定量时)
    第三级 Full GC 最大规模(通常是内存非常紧张时)

现在来讲内存泄露与内存溢出就很清楚了,内存泄露就是垃圾没有被回收掉,形成的内存泄露,内存溢出就是内存泄露多了,引起的内存资源不足,这就是内存溢出。
这里就不演示内存泄露与内存溢出了(设置一下虚拟机内存参数然后随便打点垃圾代码,就ok了,推荐不要轻易尝试,电脑这时会非常卡顿)。
欢迎大家留言评论。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值