gpt4 book ai didi

java - 发生故障时如何实现堆栈跟踪?

转载 作者:搜寻专家 更新时间:2023-11-01 00:56:05 24 4
gpt4 key购买 nike

我最近接受了一次面试,被要求设计/实现堆栈跟踪功能。这就是我的想法。

  • 维护一个堆栈,其中包含程序主要入口点的所有方法调用。
  • 如果在执行期间的任何时候出现错误,则停止程序并通过弹出每个元素来打印整个堆栈。

然后我被问了两个问题:

  1. 如何/在哪里初始化这个堆栈?
  2. 在不运行 OOM 的情况下,您如何决定堆栈应存储多少数据?为什么 JVM 永远不会运行堆栈的 OOM 原因?

我说的第一个问题,栈应该是static的,应该在程序开始的时候初始化。但我不确定第二个问题。我试图阅读 JVM 是如何做到这一点的,但它有点复杂。我尝试在谷歌上搜索基本实现,但找不到。如果有人能指出我应该寻找什么来回答这个问题的正确方向,我将不胜感激。

最佳答案

有点开放性的问题,这是我的看法:

  1. 堆栈不应该是静态的 - 每个线程都有一个堆栈,而不是每个程序,并且可以在程序的生命周期内添加和删除线程。因此,堆栈也必须动态分配。
  2. Java 堆栈可能会溢出。这可能与 OOM 不同,但差别不大。至于在堆栈中存储什么——我会选择用户可配置的,因为在开发模式和生产模式下运行时的要求非常不同。您还可以讨论可能的堆栈管理改进,例如 tail-call optimizations .这些可以防止堆栈溢出,但会影响代码的编写方式。

无论如何,我的 2¢。

关于java - 发生故障时如何实现堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29475578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com