我创建了一个使用150mb内存(私有字节)的ac#应用程序,主要是因为一个很大的字典:
Dictionary<string, int> Txns = new Dictionary<string, int>();
Run Code Online (Sandbox Code Playgroud)
我想知道如何释放这个记忆.我试过这个:
Txns = null;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)
但它似乎并没有对我的私人字节造成太大影响 - 他们从155mb减少到145mb.有线索吗?
谢谢
-编辑-
好吧,我对这段代码运气不错(它将私有字节减少到50mb),但为什么呢?
Txns.Clear(); // <- makes all the difference
Txns = null;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)
-编辑-
对于那些说'不要使用GC.collect'的人来说,这是公平的(我不打算辩论,除了说你可以看到我的C背景通过),但它并没有真正回答我的问题:如果我先清除事务列表,为什么垃圾收集器只释放内存?它不应该释放内存,因为字典已被解除引用?
我最近遇到了一个问题,似乎我需要一个'静态抽象'方法.我知道为什么这是不可能的,但我怎样才能解决这个限制?
例如,我有一个抽象类,它有一个描述字符串.由于此字符串对于所有实例都是通用的,因此它被标记为static,但我想要求从此类派生的所有类都提供它们自己的Description属性,因此我将其标记为abstract:
abstract class AbstractBase
{
...
public static abstract string Description{get;}
...
}
Run Code Online (Sandbox Code Playgroud)
它当然不会编译.我想过使用接口但接口可能不包含静态方法签名.
我应该简单地使它成为非静态的,并且总是得到一个实例来获取特定于类的信息吗?
有任何想法吗?
新的Windows 7默认隐藏系统托盘图标.
现在向用户显示信息的推荐方法是什么?
我需要向用户显示一个小的可点击图标,以便用户随时可以访问我的"工具".我应该使用小工具来显示我的GUI吗?它可以以某种方式与我的Delphi应用程序通信吗?
我想创建一个应用程序,允许您使用以下命令过滤来电到各种应答消息:
我不知道如何自动接听电话,播放录制的消息,然后等待应答并录制。或者也许只有一种与实际应答系统交互的方法,所以我只需要插入即可。
任何线索都强烈赞赏。任何代码片段都需要人类牺牲:-)
Objective-C有哪些备忘单?
我用谷歌搜索,但我真的不知道该寻找什么.他们中的大多数人都认为我知道Objective-C而我不知道.我真的想要一本针对经验丰富的程序员的指南.
我正在尝试将SQLite合并源编译到我的iPhone应用程序中(让我可以访问iPhone编译版本的二进制文件中没有的全文搜索功能.
当我将sqlite3.c和sqlite3.h添加到普通的Carbon C应用程序模板时,它编译得很好(只有一个关于未使用变量的警告),但当我尝试在我的iPhone项目中编译它时,我得到了一些错误相关丢失函数声明.我可以通过明确地包含ctype.h来解决这些问题,但这有点奇怪.
但是,即使在构建之后,它仍然无法链接以下错误:
"_sqlite3_version", referenced from:
_sqlite3_version$non_lazy_ptr in sqlite3.0
symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我认为它是iPhone应用程序的构建设置中的东西,但我无法弄明白.有任何想法吗?
HTML和JavaScript编程的最佳参考站点:
我刚刚开始感受到emacs,但是当我按下返回键时,我很沮丧.我知道如果我按下它会做它,但我不能养成这个习惯.我不能.我需要回击,我讨厌每次重新标记.
我进入选项并发现C模式钩子和C++模式钩子等 - 他们定义了两个键映射(10和13,我记得0A和0D是CR/LF,因为我在组装中经常使用它们) - - 我想,因为一个说" (lambda nil (define-key lisp-mode-map [13] (quote newline-and-indent))"和另一个相同,但(quote newline)相反,我只是把 - 并 - 缩进在它的末尾,并认为它会工作.
但事实并非如此:我设置并保存它,尝试过但无济于事.重启emacs,仍然没有成功.如何缩进我的代码呢?非常疯狂的是,emacs需要一个lisp学位才能根据你的基本需求进行配置.
另外,作为一个侧面问题:如何从剪贴板复制和粘贴?Killing/yanking很方便,除了我讨厌每次我想粘贴到其他地方时都要编辑 - >复制.
- 编辑 -
好吧,我把以下几行放到我的.emacs中并且它有效:
(add-hook 'c-mode-common-hook (lambda ()
(local-set-key (kbd "RET") 'newline-and-indent)))
谢谢您的帮助