对 Julia 中的内存分配和垃圾收集感到困惑

2024-01-06

我对 Julia 中的内存分配有点困惑。我从常见问题解答中知道 http://julia.readthedocs.org/en/latest/manual/faq/清除大变量使用的内存是通过将其设置为较小的值(例如 0)然后运行来完成的gc().

但是,我对以下内容感到有点困惑。我创建一个随机的Float32 array:

@time A = rand(Float32, 10000, 10000);

time表示分配了 ~400MB 的 RAM,Julia 的 RAM 使用量增加了 400MB。这是有道理的。

然后我申请fft,但不要将结果绑定到任何变量:

@time fft(A);

time表示分配了 ~800MB 的 RAM,Julia 的 RAM 使用量增加了 800MB。

However,RAM 使用量仍比开始时高 1.2GB。这让我很困惑,因为我没有将任何变量等同于fft(A),所以我预计分配的 800MB 将在fft被处决。

我试着跑gc,认为 Julia 会意识到有额外的 800MB RAM 被白白使用:

gc();

这没有任何作用。 RAM 使用量保持在约 1.3GB。

然而,下面两行,

A = 0;
gc();

释放所有正在使用的 1.2GB,尽管事实上sizeof(A)只有400MB。所以我的问题是:

  • 为什么它看起来像一个大小为 400MB 的对象(根据sizeof)实际上有1.2GB分配给它?

每个命令都会返回一些内容,即使它只是nothing. ans分配给每个返回的对象,即使没有直接分配并且命令以分号结尾。

** EDIT** [Julia 版本 ≥ v0.7.0 的更新信息]

Use varinfo()对于 Julia v0.7.0 及更高版本(whos()对于 Julia v0.6.4 及更低版本),在监视分配的命令和分配的空间之间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 Julia 中的内存分配和垃圾收集感到困惑 的相关文章

随机推荐

  • 可捕获的致命错误:类 PDOStatement 的对象无法转换为 D 中的字符串

    我有一个真正让我担心的问题 我创建了一个网站 我希望我的用户首先连接到该网站 然后他们在表中填写信息 然后保存数据并通过 id 重新显示它们 这就是我要做的 id SESSION idCommercant mail SESSION mail
  • Chrome 网上应用店未在搜索结果中显示我的扩展程序

    昨天 我向公众发布了我的 chrome 扩展 标题和名称为 Bumpy 但当我用同名搜索时 我无法在 Chrome 网上商店中找到它 如果有人遇到同样的问题以及解决该问题的正确方法 请告诉我 Chrome 网上应用店通常需要一些时间 根据过
  • nodejs、socket.io简单代码内存泄漏

    我使用nodejs和socket io编写了以下代码 用于一个简单的套接字应用程序 只需连接和断开连接 对于大约50个用户 内存使用量变化不大 但对于最多300个用户 一小时后 内存使用量只会增长 server js 进程接近 300MB
  • Swift:如何对 UITableView 的 rowHeight 进行动画处理?

    我试图通过在 tableView 函数内调用 startAnimation 来对 tableViewCell 行的高度进行动画处理 func tableView tableView UITableView cellForRowAtIndex
  • Firefox 插件 CPU 使用率

    我需要在 Web 开发编码会话期间收集有关 Firefox CPU 使用情况的数据 并且我想知道是否可以监视特定 Firefox 插件的 CPU 使用情况 现在我正在使用 Windows 的 perfmon msc 但它只允许我监视整个 F
  • 匹配目录路径(不包括文件路径)的正则表达式

    我正在寻找 IIS 所需的正则表达式模式 基本上我希望它匹配任何目录路径但拒绝文件路径 我到处寻找但运气不佳 示例 匹配 directory content css 匹配 directory content css 拒绝 directory
  • 加载器在 chrome 中的同步 ajax 调用期间不工作

    加载程序在 google chrome 中的同步 异步 假 ajax 调用期间不工作 在 Firefox 和 IE 中工作正常 在我的调试测试期间 Loader 显示直到 ajax 请求开始 当请求发送到服务器时被删除或消失 我在服务器上保
  • 如何在Matlab中增量训练神经网络?

    假设我有很大的训练集 导致 Matlab 在训练时挂起 或者没有足够的内存来容纳训练集 是否可以将训练集分成几部分并逐部分训练网络 是否可以一次用一个样本 一个一个 来训练网络 您可以手动将数据集分成批次并逐一训练它们 for bn 1 n
  • Hibernate 查询获取日期记录忽略时间戳

    我在 DB Oracle 表之一中有一个时间戳列 tradedate 我使用 hibernate 作为持久层来获取数据并将其存储到数据库 我有一个要求 我需要按日期查询数据库 即 用户从 UI 传递一个日期 我需要根据该日期获取过滤后的数据
  • 如何使用 jquery html 和 php 将标签插入数据库

    我想将这些特定标签插入数据库 这是我的 HTML div div
  • OSX 上的 QT:托盘图标 - 图标停靠问题

    我的目的是创建一个没有自动显示主窗口的 QT 托盘应用程序 这个应用程序的启动是一个带有菜单的托盘图标 问题是我的停靠图标仍然显示在我的应用程序中 我的问题是 1 如何防止出现 Dock 图标 2 如果答案涉及将条目添加到生成的 pfile
  • 有没有办法将图像作为位图加载到 Glide

    我正在寻找一种使用位图作为 Glide 输入的方法 我什至不确定这是否可能 这是为了调整大小的目的 Glide 具有良好的图像缩放增强功能 问题是我的资源作为位图已经加载到内存中 我能找到的唯一解决方案是将图像存储到临时文件并将它们作为 i
  • ImportError:无法从“azure.servicebus”导入名称“ServiceBusClient”

    我想运行一个简单的 Azure 服务总线程序 我收到以下错误 ImportError cannot import name ServiceBusMessage from azure servicebus 当我在互联网上搜索时 我应该安装Az
  • 如何从倒数计时器完成方法调用另一个意图?

    我正在做 Android 测验 在我的代码中 我有倒计时器 当时间结束时 我希望下一个问题出现并且分数减少 对于分数递减 currentGame decrementScore 方法 如果我在计时器的 finish 方法中添加以下代码 它工作
  • 不存在的属性 HTML 输入字段

    将不存在的属性附加到 html 元素以便在 jquery 中使用它是一个好习惯吗 例如
  • 如何从另一个线程使用服务器更新java swing gui?

    我有一个 Java Swing 应用程序 每当传入的客户端尝试建立连接时 它都会启动一个新线程 该线程使用执行程序池来打开套接字服务器 该应用程序需要两个按钮 一个用于启动服务器 另一个用于停止服务器 我想要的是显示服务器状态 并禁用相反的
  • COM 自动化接口中允许的“out”参数类型

    我正在为应用程序实现 COM 自动化 双接口 自动化接口将从 VBScript 调用 我不太清楚该方法的参数允许使用哪些类型 我确实知道价值观基本上必须符合VARIANT 但这是否意味着每个类型的参数int必须通过一个VARIANT 或者可
  • 如何在Python中将元组的元组转换为pandas.DataFrame?

    如果问题太基本 也没有冒犯的意思 如果您需要更多信息 请与我们联系 我正在寻找一种想法 以干净 高效 Pythonic 的方式将方形元组转换为 pandas DataFrame 即来自 s 1 0 0 0 2 3 0 0 4 5 6 0 7
  • 在 Hibernate 中使用 Spring Data 查询时出现 NoViableAltException

    我正在使用指定 Spring Data 查询 Query在存储库方法上 但它抛出了NoViableAltException例外 这是我正在使用的存储库接口方法和注释 Query value SELECT one saveLine two s
  • 对 Julia 中的内存分配和垃圾收集感到困惑

    我对 Julia 中的内存分配有点困惑 我从常见问题解答中知道 http julia readthedocs org en latest manual faq 清除大变量使用的内存是通过将其设置为较小的值 例如 0 然后运行来完成的gc 但