qq_36438198 2020-05-13 17:25 采纳率: 0%
浏览 227

jvm的堆栈,对象是否可回收问题?

图片说明

一个HeapTest的类,一个非静态的成员方法类型是自己,而且初始化的时候new自己, 在该类中写一个main方法,new自己抛的异常是栈空间内存溢出.
想请问一下:这两个无限创建的bytes和heapTest会被回收吗? 我的理解是不会回收的,因为他是被最开始new的那个HeapTest的引用的,初始化还没完成呢.但是抛出的这个异常让我感觉bytes应该是可回收的,要不是早就该抛出堆内存溢出的异常了,请有时间的大佬指点一下.

  • 写回答

2条回答 默认 最新

  • 轻点 别打脸 2020-05-13 17:47
    关注

    不会回收,java内存由java堆,java栈,方法区等组成,对象在创建的时候,实例对象是存放在java堆实例池中的。无线创建HeapTest,导致java栈中,当前线程所用到的栈的大小,远远超过最大值,因此报 java.lang.StackOverflowError,栈内存溢出。
    1、当前实例池中的实例对象,一直是被引用的,常量池中的实例对象不会被回收,下次创建的时候,会根据java栈中reference数据,找到这个实例对象。(从执行,到内存溢出,一直是一个线程)
    https://blog.csdn.net/loney_wolf/article/details/105143016
    https://blog.csdn.net/loney_wolf/article/details/105561410
    或许这两篇文章对你有帮助。个人理解

    评论

报告相同问题?

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?