Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 多个mono_jit_init/mono_jit_清理问题_.net_Mono_Garbage Collection_Jit - Fatal编程技术网

.net 多个mono_jit_init/mono_jit_清理问题

.net 多个mono_jit_init/mono_jit_清理问题,.net,mono,garbage-collection,jit,.net,Mono,Garbage Collection,Jit,我正在开发某个应用程序,其中要求我多次调用mono_jit_init。当我第一次运行应用程序执行mono_jit_init时,mono_jit_cleanup一切正常,当我再次尝试执行mono_jit_init时出现问题(这一次是为了加载不同的运行时[这是我的要求:(])。在mono网站上,有人提到我们应该在一个过程中初始化mono运行时一次。我已经搜索了这个问题,但没有找到任何有效的解决方案。因此,我想知道有没有什么办法可以解决这个问题?如果可能的话,有人可以详细说明为什么不支持mono_ji

我正在开发某个应用程序,其中要求我多次调用mono_jit_init。当我第一次运行应用程序执行mono_jit_init时,mono_jit_cleanup一切正常,当我再次尝试执行mono_jit_init时出现问题(这一次是为了加载不同的运行时[这是我的要求:(])。在mono网站上,有人提到我们应该在一个过程中初始化mono运行时一次。我已经搜索了这个问题,但没有找到任何有效的解决方案。因此,我想知道有没有什么办法可以解决这个问题?如果可能的话,有人可以详细说明为什么不支持mono_jit_init多次?是否相关对于某些GC清理问题?

查看Mono源代码,崩溃似乎与Mono运行时的初始化方式有关(依赖于零变量)

因此,您必须在运行时生命周期中调用一次
mono\u jit\u init()

如果库是静态加载的,那么这意味着应用程序的生命周期,但是如果Mono运行时是通过
dl_open()
动态加载的,那么只有一个加载/卸载周期。除了缓存Mono函数指针的额外工作外,这种解决方法对于运行并发Mono任务可能并不实用

另一种继续(并且支持并发运行)的方法是缓存运行时上下文以供进一步使用,而不是使用
mono\u jit\u init()
重复创建它。您必须使用专用的mono
来执行卸载
程序集
等奇特的操作

总有一个解决方案。只是需要时间来找到一个最适合你需要的