我用带有垃圾收集器的语言构建了一个解释器。我需要一个用于解释器的垃圾收集器吗?

2024-04-18

这是一个幼稚的问题,但在我迄今为止看到的教程中并没有拼写清楚。

如果我在一种高级语言(不是 C、C++ 等)之上构建一个解释器,并且它有一个垃圾收集器……是否有必要为解释器本身制作一个?

如果答案是肯定的……那一定是同一类宿主吧? (即:如果主机是标记-清除的,那么解释器也是如此?),或者是否可以利用主机并让它管理所有这些?

主机的选择有影响吗?我计划使用 F#/.NET,但 Java 和其他语言是否相同?


解释语言的内存管理可以搭载主机的内存管理,但如果您正在实现一个非玩具解释器,您可能需要使用弱指针 http://en.wikipedia.org/wiki/Weak_reference用于主机对解释世界的值的管理引用,如果解释世界中没有对它们的引用,则应对这些值进行垃圾收集。

如果您正在实现一个玩具解释器,甚至没有人会注意到您是否使用强指针来进行从主机世界到解释世界的管理引用。在这种情况下,我建议您不要打扰:弱指针作为一项功能,在所有足够高级的内存管理语言中都可用,但细节有所不同,并且它们的使用总是很棘手。布鲁诺·海布尔的调查 http://www.haible.de/bruno/papers/cs/weak/WeakDatastructures-writeup.html提供所有品种的图片。在他的调查中,弱指针的这种使用属于“全局垃圾收集:允许垃圾收集跨进程边界或跨 Lisp - C/C++/Java 外部接口边界”,除了外部接口边界位于主机之间语言和解释语言。

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

我用带有垃圾收集器的语言构建了一个解释器。我需要一个用于解释器的垃圾收集器吗? 的相关文章

  • 使用 < 有什么区别? java 泛型中的 extends SomeAbstract> 与 SomeAbstract

    我将从 DotNet 转向 java 这种扩展的想法是新的 我看过一些帖子充分解释了使用List
  • 编程语言中的协变和逆变有什么区别? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 谁能解释一下协变和逆变的概念 编程语言理论 协方差非常简单 最好从某个集合类的角度来思考List 我们可以参数化 the List具有
  • 哪种函数式编程语言在 Eclipse 中提供最好的支持?

    作为一项练习 我的团队正在考虑学习函数式编程 选择一种语言的因素之一是它在 Eclipse 中的支持 任何带有 Eclipse 插件的语言都可以 但是哪种语言提供最好的免费插件呢 额外问题 该语言的最佳在线 书籍教程 我不知道它是否是最好的
  • 抑制 C# 垃圾回收

    我的应用程序分配大量内存 数百万个小对象 总计几千兆字节 并保留很长时间 NET 是否浪费时间检查所有这些数据来对其进行 GC 第 2 代 GC 检查所有对象的 GC 多久发生一次 有什么办法可以降低它的发生频率或者暂时抑制它的发生吗 我确
  • .Net 与 Java 垃圾收集器

    有谁知道 Java 和 Net 垃圾收集器之间的主要区别 网上搜索并没有透露太多信息 这是一个测试中出现的问题 区别在于 CLR Net GC 和 JVM GC 之间 而不是语言本身 两者都可能发生变化 并且其行为规范宽松 允许在不影响程序
  • JDK 1.6.x G1 的经验(“垃圾优先”)

    我想知道最新JDK中G1垃圾收集器的体验如何 我懂了NullPointerException尽管代码没有改变并且在早期的 JDK 中表现正常 但我的程序中抛出了这个问题 垃圾收集器只会影响表现您的应用程序 而不是它的正确性 我一直在 Ecl
  • 如何减少Scala中创建的对象数量?

    我正在 Scala 中编写一个计算机图形应用程序 它使用 RGB 类返回图像中某个点的颜色 正如你可以想象的 返回颜色 RGB 对象的函数被调用了很多次 class RGB val red Int val green Int val blu
  • 左/右旋转进位的实际用途

    循环左进位和循环右进位指令有哪些实际用途 在我的汇编课上 我们无法想出一个有用的好例子 如果要将位从一个操作数移出并移入另一个操作数 SHL EAX 1 move sign bit of EAX RCL EDX into LSB of ED
  • 为什么删除 DataFrame 的列或部分会增加内存使用量,以及如何确保对未使用的 DataFrame 切片进行垃圾回收

    处理大型 DataFrame 时 您需要小心内存使用情况 例如 您可能想要分块下载大数据 处理这些块 然后从内存中删除所有不必要的部分 我找不到任何有关处理垃圾收集的最佳程序的资源pandas 但我尝试了以下方法并得到了令人惊讶的结果 im
  • 有C语言的解释器吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话
  • numpy.ndarray 对象不被垃圾回收

    在尝试微调某些 C C 函数的 Python 绑定中的一些内存泄漏时 我发现了一些与 Numpy 数组的垃圾收集相关的奇怪行为 为了更好地解释这种行为 我创建了几个简化的案例 该代码是使用memory profiler 其输出紧随其后 当涉
  • 如何启动 VBS 的交互式控制台?

    与这个问题非常相似 如何启动 Perl 的交互式控制台 https stackoverflow com questions 73667 how can i start an interactive console for perl 我只是希
  • 特定领域语言与函数库

    这可能是主观的 我不知道 我有这个问题 我有点等同于 这个项目用什么语言 问题 因为我似乎无法解决它 我受委托为一个非常精通技术的社区 但不是程序员 写一本关于某个领域 比如说物理学的一个非常具体的分支 的书 这是一本关于他们日复一日使用的
  • ALGOL 曾经用于“主流”编程吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我知道ALGOL http en wikipedia org wiki ALGOL作为一种理论语言 该语言非常重要 并且根据维基百科 它也
  • 对象什么时候有资格进行垃圾收集?

    在下面的代码中 考虑到amethod已被调用 最初引用的对象在什么点 线上myObject 有资格进行垃圾收集吗 class Test private Object classObject public void amethod Objec
  • 为什么在方法中声明的对象在方法返回之前会受到垃圾回收?

    考虑在方法中声明的对象 public void foo final Object obj new Object A long run job that consumes tons of memory and triggers garbage
  • 循环内的局部变量会被垃圾收集吗?

    我想知道将循环内引用的任何变量放在循环外是否更有效 或者它们可以像函数内的变量一样被垃圾收集吗 var obj key val for var i 0 i lt 10 i console log obj or for var i 0 i l
  • Chrome 内存/垃圾收集问题

    我在使用 Chrome 时遇到内存 垃圾收集问题 我正在开发一个照片上传网站 该网站允许我的客户使用 HTML5 和文件 API 拖放照片进行上传 因此这在 IE 中不起作用 它仅适用于 Chrome 和 FF 我还没有在 Safari O
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 迁移到 java 17 后有关“每个进程的内存映射”和 JVM 崩溃的 GC 警告

    我们正在将 java 8 应用程序迁移到 java 17 并将 GC 从G1GC to ZGC 我们的应用程序作为容器运行 这两个基础映像之间的唯一区别是 java 的版本 例如对于 java 17 版本 FROM ubuntu 20 04

随机推荐

  • 使用无符号整数溢出是一个好的做法吗?

    前几天我正在阅读 C 标准 并注意到与有符号整数溢出 未定义 不同 无符号整数溢出有明确的定义 我已经看到它在很多代码中用于最大值等 但是考虑到有关溢出的巫毒 这被认为是良好的编程实践吗 无论如何都是不安全的吗 我知道许多现代语言 例如 P
  • 同时打印到屏幕并写入文件

    我在网上找到了一些通常有效的代码 但我想在同一个程序中多次使用它 将不同的内容写入不同的文件 同时仍然始终打印到屏幕上 也就是说 当它关闭时 我认为 sys stdout 关闭 因此根本无法打印 并且再次使用此类会失败 我尝试重新导入 sy
  • 在 MATLAB 中数值计算复值函数的导数

    我想在 MATLAB 中以数值方式计算复值函数 全纯函数 的导数 我已经计算了复平面上网格中的函数 并且尝试使用柯西 黎曼关系来计算导数 鉴于 u 实数 f v imag f x 实数 点 y imag 点 导数应由下式给出 f du dx
  • 如何在 Pygame 中翻转图像

    我希望图像在向右移动时朝右 在向左移动时朝左 我不知道在这里要做什么 这是一项作业 不需要翻转图像 但我仍然想学习如何做到这一点 Author victor Xu Date January 21st 2021 Description Ani
  • 我可以获取指纹值吗?

    我尝试获取指纹值并存储它 之后 我尝试比较一下 value 与来自另一个硬件的指纹值 指纹 sensor Q1 他们之间可以比较吗 Q2 如果可以的话 我怎样才能获得这个值 我搜索过这些问题 发现这是不可能的 但我觉得 获取指纹信息的方法是
  • Realloc 在循环内第 10 次迭代后失败

    我试图从用户那里获取一系列字母 并将输入放入动态数组中 然而 由于我不太明白的原因 如果用户输入超过 10 个字母 则 realloc 失败 返回 NULL 并打印 分配内存时出错 我确实尝试将 realloc 更改为 calloc 这似乎
  • 释放Java 7 WatchService的资源

    我正在使用 Java 7 WatchService 来监视目录 我不断地改变我正在观看的目录 我遇到了异常 java io IOException 已达到网络 BIOS 命令限制 50 个目录之后 我确信在创建新的 WatchService
  • Django '/' 仅主页 url 错误

    我正在使用 Django 2 0 现在我不知道如何为主页创建一个 空 url 意思是 我希望它路由到web com or web com 我尝试了这段代码 但它不起作用 urlpatterns path admin admin site u
  • 使用 Java 将文件附加到 zip 文件

    我当前正在提取一个 war 文件的内容 然后将一些新文件添加到目录结构中 然后创建一个新的 war 文件 这一切都是通过Java以编程方式完成的 但我想知道复制战争文件然后附加文件是否会更有效 然后我就不必等待战争扩大然后必须再次被压缩 我
  • 如何找到射线与移动圆的第一个交点

    我已经在一个问题上苦苦挣扎了一段时间 到目前为止还没有找到比天真的解决方案更好的解决方案 N circles are given that are moving according to a linear law For each of t
  • ReactJS 通过 API 调用保护路由

    我正在尝试保护 ReactJS 中的路由 在每个受保护的路由上 我想检查保存在 localStorage 中的用户是否良好 下面你可以看到我的路线文件 app js class App extends Component render re
  • Doctrine QueryBuilder 和 concat 问题

    我有以下代码 它依赖于 Doctrine 的 QueryBuilder API 来生成 DQL 语句 class PlayerRepository extends EntityRepository public function findB
  • Java:字符串到布尔值

    我必须读一本String从一个字段 然后将其转换为Boolean 我试过这个 ObjectInputStream nm nm new ObjectInputStream new FileInputStream buscamines txt
  • 如何在一个Web应用程序上下文中访问另一个Web应用程序上下文

    我在 Tomcat6 服务器中部署了两个 WAR 例如WAR A WAR B in Context A and Context B分别 我已经存储了一些数据Context A 我想读取该数据Context B 我已经通过网络找到了一些方法来
  • 绑定 Telerik RadTreeView 客户端

    我有一个 javascript 对象数组 我想用它来填充 RadTreeView 除了为我的对象集合手动编写自己的绑定方法之外 我不知道如何从客户端完成此操作 我的 javascript 数组中的每个对象都有 ID 父ID 价值 文本 有没
  • Django Rest Framework - 如何为所有 ModelSerializer 字段创建自定义错误消息?

    这是我的serializers py 我想为内置用户模型创建一个序列化器 from rest framework import serializers from django contrib auth models import User
  • Solidity有HTTP请求功能吗?

    我正在使用以太坊制作一个项目 在这个项目中 我正在签订一份名为 A 的合同 当我向 A 发送消息时 我希望 A 发出网络请求 Solidity 是否可以使用 http 请求 方法 GET POST 以太坊区块链无法与外界交互 否则它将不再是
  • 响应预期内容长度返回-1

    您好 当我从网络服务加载数据时 我需要创建一个进度视图 实际上预期的内容长度总是返回 1 在查看了很多相似问题之后 看起来我的网络服务从未发送内容长度 然后我检查 CURL 结果如下 lt HTTP 1 1 200 OK lt Date T
  • R Stargazer 报告系数、置信区间和精确 p 值

    我正在运行一个国家固定效应模型 进一步包括一个虚拟变量 我正在使用 Stargazer 包 但似乎无法弄清楚如何报告置信区间和确切的 p 值 如果我运行我的模型 stargazer dummy CPP title xx align TRUE
  • 我用带有垃圾收集器的语言构建了一个解释器。我需要一个用于解释器的垃圾收集器吗?

    这是一个幼稚的问题 但在我迄今为止看到的教程中并没有拼写清楚 如果我在一种高级语言 不是 C C 等 之上构建一个解释器 并且它有一个垃圾收集器 是否有必要为解释器本身制作一个 如果答案是肯定的 那一定是同一类宿主吧 即 如果主机是标记 清