- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在编写一个项目(用 Java 编写),教授说我们不允许使用超过 200m 的类我使用 -Xmx50m 将堆栈内存限制为 50m(绝对确定),但根据顶部,它仍在使用 300m
我尝试运行 Eclipse Memory Analyzer它只报告了 26m
这可能都是堆栈上的内存吗?我很确定我永远不会超过大约 300 个方法调用深度(是的,这是一个递归 DFS 搜索),所以这意味着每个堆栈帧都在使用几乎是一兆字节,这似乎令人难以置信。
程序是单线程的。有谁知道我可能会减少内存使用的其他地方?另外,如何检查/限制堆栈使用的内存量?
更新:我现在正在使用以下 JVM 选项但没有任何效果(根据顶部仍然大约 300m):-Xss104k -Xms40m -Xmx40m -XX:MaxPermSize=1k
另一个更新:实际上,如果我让它运行更长一点(使用所有这些选项)大约一半的时间它会在 4 或 5 秒后突然下降到 150m(另一半不会下降)。真正奇怪的是我的程序没有随机性(正如我所说的它是单线程的),所以没有理由在不同的运行中表现不同
会不会和我使用的 JVM 有关?
java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.3) (6b27-1.12.3-0ubuntu1~10.04)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
根据java -h,默认JVM是-server。我尝试添加 -cacao,现在(使用所有其他选项)它只有 59m。所以我想这可以解决我的问题。谁能解释为什么这是必要的?另外,有什么我应该知道的缺点吗?
另一个更新:cacao 与服务器相比真的很慢。这是一个糟糕的选择
最佳答案
Top 命令反射(reflect)了 Java 应用程序使用的内存总量。其中包括:
关于Java 使用的内存远多于使用 -Xmx 分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15282178/
我有以下型号:http://slexy.org/view/s20T8yOiKZ from mxutils.cms_services import generate_secid from django.
我遇到了一个问题..当我用我的程序运行 valgrind 时,我得到了以下输出,这让我很困惑: ==12919== HEAP SUMMARY: ==12919== in use at exit
我有一张产品销售表。每笔销售都有一个项目代码(例如序列号)和一个日期。 item_code | date a | 2013-01-01 a | 2013-01-18 b | 3013-02-10 c
是否可以定义一个不限于 1 个字符的分隔符?基于标题的示例,我想将我的分隔符定义为例如'#+#'。文本文件/行可以包含这两个字符,但您遇到特定子字符串/文本组合的可能性很小。 最佳答案 不可以,您不能
Produce a PDA to recognise the following language : the language of strings containing more a's than
我想做一个程序,想像这样生成一个 process -> n process -> n process 第二级可以使用多处理生成进程吗?使用 python 2.6 的 multiprocessinf 模
我对使用 CNN 进行图像识别非常陌生,目前使用 Keras(VGG 和 ResNet)中提供的几种标准(预训练)架构来执行图像分类任务。我想知道如何将输入 channel 的数量概括为 3 个以上(
我有一个 html 文档,当 URL 长度小于 30 个字符时,我想隐藏其中的一些 id(在本例中为 id="test")。 var test = document.getElementById('t
我有一个以 Qtreewidget(有 3 列)作为中央小部件的主窗口。我想保持第一列和第二列的大小固定,但第二列的大小应等于 qtreewidget 的大小减去其他两列的大小。既然主窗口(也就是树形
我的问题类似于this一。我想知道是否存在一个 PDA,它以随机顺序接受包含 a、b 和 c 的任何单词,其中 a 的总量高于 b 的总量并高于 c 的总量,例如单词“abcacba”将被接受。 最佳
我正在尝试使用准备好的 PDO 语句执行 while 循环,但我只希望它在有任何行时执行。目前我正在使用它,但它似乎缺少第一个结果,大概是因为它移动了指针。 正确的做法是什么? $stmt = $pd
1.实体(表)CurrentyEnitiy.java @Entity(tableName = "Corona") public class CurrentyEntity { @PrimaryKey(a
我是一名优秀的程序员,十分优秀!