美文网首页
为什么栈不用垃圾回收器回收?为什么程序计数器没有OOM?

为什么栈不用垃圾回收器回收?为什么程序计数器没有OOM?

作者: 笨比乔治 | 来源:发表于2020-10-27 09:21 被阅读0次

1.虚拟机栈不用垃圾回收器?

虚拟机栈里的栈帧即对应代码中的一个方法。代码运行的过程,即栈帧入栈出栈的过程。

一个方法执行完,栈帧出栈后,即被销毁。只有入栈出栈这样简单的操作,不需要设计复杂的垃圾回收算法来回收。随着方法的执行,线程的结束正常回收即可。

在递归函数中,该方法还没有结束,就一直不会出栈,如果循环的次数过多,栈空间有被挤爆的可能。会出现StackOverflowError 栈溢出。栈溢出也是内存溢出的一种情况。可通过-Xss (stack size)设置栈大小。

2.程序计数器没有OOM?

程序计数器(Program Counter Register)也称PC寄存器。是运行时数据区里唯一一块没有Out of Memory的区域。

只存下一个字节码指令的地址,消耗内存小且固定,无论方法多深,他只存一条。

只针对一个线程,随着线程的结束而销毁。

3.线程是如何创建和销毁的?

J2SE中 main函数即是主线程,程序执行完后自动销户。

Thread也可以创建多线程。

相关文章

  • JVM-垃圾收集--标记(回收标准判定)

    垃圾收集的是哪个问题: 判断是否需要回收 回收时机 回收方法 需要垃圾收集的区域:方法区和堆区。因为栈、程序计数器...

  • 2020-09-22---第三章--垃圾回收

    1.垃圾收集程序计数器、虚拟机栈、本地方法栈都是随着方法或者进程的结束而被回收,本地方法区、堆时需要垃圾回收器来来...

  • JVM垃圾回收

    JVM垃圾回收 内存结构 要想理解jvm的垃圾回收机制,必须先知道java虚拟机的内存结构。 程序计数器程序计数器...

  • 2、自动内存管理:垃圾回收与内存分配

    一、垃圾回收解决3个问题 1、哪些内存需要被回收? 程序计数器、虚拟机栈、本地方法栈这3个区域随线程而生,随线程而...

  • JVM之垃圾回收机制

    1、范围:要回收哪些区域 在JVM五种内存模型中,有三个是不需要进行垃圾回收的:程序计数器、JVM栈、本地方法栈。...

  • Java GC

    要回收哪些区域 在JVM五种内存模型中,有三个是不需要进行垃圾回收的:程序计数器、JVM栈、本地方法栈。因为它们的...

  • 《深入理解Java虚拟机》读书笔记(第三章)

    概述 内存回收主要考虑三件事情 那些内存需要回收? 什么时候回收? 如何回收? 程序计数器、虚拟机栈、本地方法栈三...

  • 3.垃圾收集器与内存分配策略

    垃圾收集器与内存分配策略 1. 概述 垃圾回收器关注的是堆内存、方法区。 程序计数器、虚拟机栈、本地方法栈3个区域...

  • 三. 垃圾收集器与内存分配策略

    3.1概述 主要问题: 哪些内存需要回收? 什么时候回收? 如何回收? 其中程序计数器,虚拟机栈,本地方法栈随线程...

  • 深入浅出 JVM - JVM 内部结构总结

    目录 运行时数据区域 垃圾回收算法 垃圾收集器 运行时数据区域 线程私有区域程序计数器Java 虚拟机栈本地方法栈...

网友评论

      本文标题:为什么栈不用垃圾回收器回收?为什么程序计数器没有OOM?

      本文链接:https://www.haomeiwen.com/subject/rbyfuktx.html