JVM阅读记录

    一: 内存泄露与内存溢出的区别
1:内存泄露是指程序在运行时不断的创建新的对象,并且始终保持这些对象在引用状态,使GC无法回收这些对象,
资源得不到释放,当对象的数量达到堆的最大值时,就会出现内存泄露异常
        
2:内存溢出是指程序所使用的内存值达到了JVM所能的申请的最大的内存值。


  二:
Java的线程是映射到系统内核线程上的,过多地创建线程会使内存使用较高,可能会导致操作系统假死现象。


  三:运行时常量池溢出,会报OutOFMemeryError: PermGen Space(永久保存区域溢出,说明运行时常量池属于方法区)
JVM的GC在回收对象时是按照引用机制回收对象的,当对象还存在引用值时是不会回收对象的。但此种情况也存在特殊,
例如在List集合中,当把集合中的成员的引用滞空时是不能释放空间的,因为整个集合的引用并没有滞空,所以GC是不能
回收释放空间的。同样的情况适用于数组。
  
  四:Java和C#判断对象是否存在并不是采用引用计算法,而是采用根搜索法。
    引用计算法:给创建的对象增加一个引用计算器,每当增加一个引用时,计算器+1,每当一个引用失效时,计算器-1,当计算器
    为0时, 判断这个对象是可以被回收的。
   
    根搜索法:通过一系列名为”GC ROOTS“的对象做为起始点,从起始点开始向下搜索,走过的路径称为引用连,当一个对象到达”GC ROOTS“没有任何
    引用连时,则改对象是不可达到的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值