小编ner*_*hon的帖子

将一个对象的方法传递给另一个对象是否保持第一个对象存活?

假设我有三个对象:'a','b'和'c'.对象'a'和'c'是长寿的,静态引用的服务单例.对象'b'是短暂的,即没有静态引用使其保持活动状态.

现在假设对象'a'在其一个方法的范围内创建对象'b'的实例,例如

B b = new B();
Run Code Online (Sandbox Code Playgroud)

进一步假设B类看起来像这样:

public B ()
{
    C.ActionList.Add ( SomeMethod );
}

void SomeMethod ()
{
...
}
Run Code Online (Sandbox Code Playgroud)

现在,对象'b'存活了多长时间?我的推测是,它超出了称为构造函数的方法的范围; 具体来说,只要它的方法仍然在对象'c'的'ActionList'中.

那是对的吗?如果没有,它会被垃圾收集,当'c'运行'ActionList'中的所有方法时会发生什么?

额外的问题:如果'b'上的方法没有被命名,但匿名并在构造函数中写入如下,该怎么办?

public B ()
{
    C.ActionList.Add ( () => {
    ...
    } );
}
Run Code Online (Sandbox Code Playgroud)

c# delegates scope action object-lifetime

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

在高对象数下,Amazon S3 GET对象和PUT对象命令会变慢吗?

我正在考虑将S3用于后端持久存储.

但是,根据架构选择,我预测一些存储桶可能需要存储数十亿个小对象.

假设我使用UUID作为键,GET对象和PUT对象如何在这些条件下执行?我可以期待O(1),O(logN)或O(n)性能吗?

我是否需要重新考虑我的架构并以某种方式细分更大的存储桶以保持性能?我需要对象查找(GET)尽可能快.

database get put amazon-s3 amazon-web-services

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