java - 如何对堆栈工作做出合理假设

标签 java android opencv embedded embedded-linux

例如,给定一个 openCV 应用程序,速率 60 fps 的 1920*1080 高清涉及过滤、子采样等的组合。(如果您不熟悉也没关系...)

一般来说,如何找到应用程序的关键内存存储?我不知道如何根据什么找出答案。

最佳答案

How to make reasonable assumptions about stack works

您无需做出假设。它记录在 JVM 规范中(抽象级别),抽象到具体的映射是常识。

Generally speaking, how can I find key memory storage for an application?

假设您询问堆栈空间的使用情况:

  • 预测堆栈使用情况的(理论上)方法是分析代码以找出所有可能的调用路径。然后,对于每个调用路径上的每个方法调用,计算各个堆栈帧的使用情况(局部变量的空间+参数+调用开销的总和),以及所有调用的总和。最大堆栈使用量是调用路径总和的最大值。

  • 实际的方法是运行应用程序并查看它实际需要多少堆栈内存;即设置特定的堆栈大小并查看应用程序是否因 StackOverflowError 崩溃。

对于堆内存,预测使用情况甚至更加困难,除非应用程序的内存使用模式简单且稳定。即使测量它也很棘手。

<小时/>

当然,这些东西可能高度依赖于应用程序、平台以及应用程序的“输入”。

我的建议:不要尝试。获得足够可靠、有用的数字太难了。

关于java - 如何对堆栈工作做出合理假设,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33968348/

相关文章:

java - 线程 "main"java.lang.SecurityException : Prohibited package name: java. sql 中的异常

java - GSON从复杂的json中获取字符串

opencv - 静止图像捕获响应时间

java - 单独类中的 OkHttp 请求

android - 从给定的日期和时间创建 30 分钟的时段

c++ - OpenCV 中的串行通信

python - 加载图像时 OpenCV 显示错误或修改的结果

java - 如何获取文件的媒体类型(MIME 类型)?

java - Java:光线追踪:光面反射着色

android sqlite : getting wrong values