Java知识整理——垃圾回收

  1. Java中垃圾回收的目的是什么, 它什么时候被使用 ?
    垃圾回收用于识别和丢弃程序不再需要的对象, 以便回收和复用资源.
  2. System.gc() 和Runtime.gc()方法用途?
    这些方法用于提醒JVM开始垃圾回收. 然而开始垃圾回收的时机是由JVM决定的.
  3. finalize()什么时候被调用 ? 它的目的是什么 ?
    finallize方法是在释放该对象内存前由gc(垃圾回收器)调用. 通常建议在这个方法中释放该对象持有的资源.
  4. 如果一个对象的引用被设置为null, gc会立即释放该对象的内存么?
    不会, 这个对象将会在下一次gc循环中被回收.
  5. Java堆的结构是什么 ? 堆中的Perm Gen(全称是Permanent Generation)空间是什么 ?
    JVM有一个运行时数据区,即堆(heap).所有的类实例和数组的内存都是从堆中分配的. 它在JVM启动时被创建. 对象所占用的堆内存会被一个称为垃圾回收器的自动内存管理系统收回.
    堆内存中包含活的和死的对象. 活的对象可以被程序访问并且不会被垃圾回收. 死的对象是那些不会被程序访问的, 但还没有被垃圾回收器收回的对象. 这种对象会占用堆内存空间直到最终被垃圾回收器收回.
  6. Serial 垃圾回收器与 Throughput 垃圾回收器区别 ?
    Throughput垃圾回收器使用并行版本的新生代回收器, 它用于中到大型数据集的应用. 另一方面, Serial回收器通常足以应对大多数的小应用(在现代处理器上不会超过约100MB的堆内存).
  7. 什么时候对象会被回收 ?
    当当前程序无法访问到某个对象时,该对象将被回收.
  8. 垃圾回收发生在指定的JVM区域 ?
    垃圾回收在 PermGen 里发生。如果 PermGen满了或是到了瓶颈,就会触发完全回收。如果仔细 观察垃圾回收过程,会发现PermGen最后也被回收了. 这就是为什么要设置合理的PermGen大小以避免完全垃圾回收. 可以看看这篇文章 Java 8: PermGen to Metaspace.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值