有哪些方法可用于确定嵌入式/内存受限系统的最佳堆栈大小?如果它太大那么浪费的内存可以在其他地方使用.但是,如果它太小,那么我们得到这个网站的同名......
为了尝试快速启动:Jack Ganssle在"嵌入式系统设计的艺术"中指出,"凭借经验,人们可以学习标准的,科学的方法来计算堆栈的正确尺寸:随机选择尺寸并希望." 任何人都可以做得更好吗?
要求提供更具体的例子.那么,在没有操作系统的情况下使用IAR Embedded Workbench工具链,针对具有2 kB RAM 的MSP430 MCU的C程序怎么样?使用JTAG调试器时,此IDE可以显示堆栈内容和使用情况.
我知道在运行时没有办法在Java中获取线程的堆栈大小(参见可以在运行一段时间后获得Java中线程使用的实际堆栈大小吗?).
例如,如果我们创建一个指定堆栈大小为64*1024 的java.lang.Thread,JVM可以自由地为我们提供任何堆栈大小的线程.
但是,我相信实际上知道堆栈的实际大小对于需要这种信息的某些应用程序非常有用.
我们没有一个方法告诉我们堆栈使用的实际字节数是什么原因?
架构中是否存在某种限制,使得无法获得线程的实际字节数?
实际上,有两种尺寸:最初承诺和总预留.
你使用静态或动态分析吗?哪些工具?哪种技巧?
我今天一直在编写一个递归函数,递归深度取决于输入长度。
我想从纯兴趣的角度来看,是否有某种方法可以监视特定程序执行期间的最大调用堆栈深度,可能是在某些 JVM 日志或其他地方?
经过一番思考,我可以想象出一种分析方法来近似计算,但这将非常耗时,并且需要对 JVM 内部结构和字节码有很好的了解。
JVM 允许配置堆栈大小内存的限制,但我从未见过有关如何获得实际达到的限制的任何信息,而不是内存大小单位,而是分配的堆栈帧数。