小编Nei*_*ser的帖子

在Mono中触发垃圾收集

如何让Mono的垃圾收集器做任何有用的事情?在这篇文章的底部是一个简单的C#测试程序,它生成两个大字符串.生成第一个字符串后,将取消引用该变量,并退出作用域,并手动触发垃圾收集器.尽管如此,在构造第二个字符串期间,使用的内存不会减少,程序会因内存不足而爆炸.

未处理的异常:OutOfMemoryException [ERROR]致命的未处理的异常:System.OutOfMemoryException:内存不足(包装器托管到本机)字符串:System.String.Concat的InternalAllocateStr(int)(System.String str0,System.String str1) [0x00000] in:0表示GCtest.Main(System.String [] args)[0x00000] in:0

经过研究后,我发现--gc=sgenMono 的开关使用了不同的垃圾收集算法.更糟糕的是,生成以下堆栈跟踪:

堆栈跟踪:

at(wrapper managed-to-native)string.InternalAllocateStr(int)<0xffffffff> at string.Concat(string,string)<0x0005b> at GCtest.Main(string [])<0x00243> at at(wrapper runtime-invoke). runtime_invoke_void_object(object,intptr,intptr,intptr)<0xffffffff>

本机堆栈跟踪:

0 mono-sgen 0x000bc086 mono_handle_native_sigsegv + 422 1 mono-sgen
0x0000466e mono_sigsegv_signal_handler + 334 2 libsystem_c.dylib
0x913c659b _sigtramp + 43 3 ???
0xffffffff 0x0 + 4294967295 4 mono-sgen
0x0020306d mono_gc_alloc_obj_nolock + 363 5 mono-sgen
0x0020394a mono_gc_alloc_string + 153 6 mono-sgen
0x001c9a10 mono_string_new_size + 147 7 mono-sgen
0x0022a6d1 ves_icall_System_String_InternalAllocateStr + 28 8 ???
0x004c450c 0x0 + …

c# mono garbage-collection

12
推荐指数
1
解决办法
5114
查看次数

将带有换行符的 SVG 文本复制到剪贴板

SVG 中的换行符使用tspan带有属性的元素来表示dy。像这样:

  <text>
    <tspan x="10">line 1</tspan> 
    <tspan x="10" dy="15">line 2</tspan> 
  </text>
Run Code Online (Sandbox Code Playgroud)

这按预期显示为两行。问题是,将生成的文本复制到剪贴板时,没有换行符(在 Chrome 和 Firefox 中测试)。有没有办法将 CR-LF 编码到行尾?

例如,剪贴板中没有换行符会导致在 SVG 应用程序中呈现代码示例出现问题,因为用户无法将代码复制并粘贴到编辑器中。

这是 JSFiddle 中的演示: https ://jsfiddle.net/78b9g8je/

javascript clipboard svg text line-breaks

8
推荐指数
0
解决办法
978
查看次数

Dart 的 Expect 发生了什么?

我维护的一些 Dart 代码使用 Expect.equals、Expect.isTrue 等。Expect 似乎不再是 Dart 的一部分。变更日志中没有提及它的消失。问题:

  1. 当出现这样的重大变化时,我应该去哪里寻找?
  2. 在过去的五年里,每年我的所有 Dart 应用程序都会由于核心语言的更改(例如字符串连接被删除或 dart:uri 消失)而停止编译。Dart 程序员如何处理这个问题?

dart

1
推荐指数
1
解决办法
341
查看次数

标签 统计

c# ×1

clipboard ×1

dart ×1

garbage-collection ×1

javascript ×1

line-breaks ×1

mono ×1

svg ×1

text ×1