- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我真的很喜欢弱引用。但我希望有一种方法可以告诉 CLR 您认为引用有多弱(例如,在 1 到 5 的范围内)。那太棒了。
Java 有 SoftReference、WeakReference,我相信还有第三种类型,称为“幻象引用”。那里有 3 个级别,GC 在决定该对象是否被砍掉时有不同的行为算法。
我正在考虑对 .NET 的 WeakReference 进行子类化(幸运的是,有点奇怪,它没有被密封)来制作一个基于到期计时器或其他东西的伪软引用。
最佳答案
我认为 NET 没有软引用的根本原因是因为它可以依赖具有虚拟内存的操作系统。 Java 进程必须指定其最大操作系统内存(例如使用 -Xmx128M
),并且它从不占用超过该值的操作系统内存。而 NET 进程不断占用它需要的操作系统内存,当 RAM 耗尽时,操作系统会提供磁盘支持的虚拟内存。如果 NET 允许软引用,那么 NET 运行时将不知道何时释放它们,除非它深入操作系统以查看其内存是否实际上在磁盘上分页(一个讨厌的 OS/CLR 依赖性),或者它请求运行时指定最大进程内存占用量(例如,相当于 -Xmx
)。我猜 Microsoft 不想将 -Xmx
添加到 NET,因为他们认为操作系统应该决定每个进程获得多少 RAM(通过选择将哪些虚拟内存页保存在 RAM 或磁盘上),并且不是过程本身。
关于c# - 为什么 .NET 不像 Java 那样既有 SoftReference 又有 WeakReference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/324633/
为什么 DOM 有一个名为 self 的对象和另一个名为 window 的对象,而它们是同一事物?更让人困惑的是 window 有一个名为 self 的属性,所以: window === window
我对 AMQP 的理解是,消息只有以下几个组成部分: 邮件正文 路由键 交流 队列附加到交换。消息不能对队列有任何了解。他们只是发布到一个交换器,然后根据交换器类型和路由键,将消息路由到一个或多个队列
仅仅是因为“大型 API 综合症”还是生成在某些情况下更偏向的随机数?如果是……我认为控制偏见很重要。 最佳答案 他们是一样的,真的。只是一个方便的方法。检查 javadoc here .此外,您
我是一名优秀的程序员,十分优秀!