设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3508|回复: 7
打印 上一主题 下一主题

【读书】图解教程-CA-712D 小铁匠

[复制链接]
跳转到指定楼层
1#
发表于 2014-3-20 10:01:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不知道是第几轮,继续回来补漏

日期:3.20-
目标:将以前漏掉的内容,发帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2014-3-20 10:36:06 | 只看该作者
第一章

值类型与引用类型

  值类型:变量直接存储数据      一般存储在堆栈中 (但如果值类型在引用类型中声明为字段,它们就内联存储在堆中 )。
  引用类型:变量仅存储地址      引用类型的实例总是存储在一个名为“托管堆”的内存区域中
前段时间在内存中定义较大的object二维数组时,出现过内存溢出,对这一块特别关注,后面讲讨论 堆栈与堆 及其工作原理
   
3#
 楼主| 发表于 2014-3-20 11:07:46 | 只看该作者
继楼上:
垃圾回收机制:
每隔一段时间,当.net检测到给定进程的托管堆已 满,需要清理时,就调用垃圾回收器。
垃圾回收器处理 目前代码中的 所有变量,检查对存储在托管堆上的 对象的引用,确定哪些对象可以 从代码中 访问,即哪些对象有引用。 没有引用的对象就不再认为可以 从代码中访
问,因而被删除
4#
 楼主| 发表于 2014-3-20 11:11:01 | 只看该作者
插入之前碰到的问题:

public class Test()
{
object[,] dataArray=new object[200000,20]
dataArray=xxx;时发生内存溢出
}
第一次执行完成之后,再执行第二次出现OutOfMemory错误

那么,根据垃圾回收机制,我只需取消对 dataArray的引用,就可以强制执行垃圾回收,来释放内存??
5#
发表于 2014-3-20 15:40:18 | 只看该作者
BlackSmith_00 发表于 2014-3-20 11:11
插入之前碰到的问题:

public class Test()

内存回收的时机是不可预测的,检查内存非常困难且耗时。
6#
 楼主| 发表于 2014-3-20 15:59:15 | 只看该作者
public virtual object SyncRoot

{

    get

    {

        if (this._syncRoot == null)

        {

            Interlocked.CompareExchange(ref this._syncRoot, new object(), null);

        }

        return this._syncRoot;

    }

}
7#
 楼主| 发表于 2014-3-20 16:03:47 | 只看该作者
Interlocked为多个线程共享的变量提供原子操作(原子操作就是单线程操作)。在一个Hashtable实例中,不论我们在代码的任何位置调用,返回的都是同一个object类型的对象。于是下面2段代码其实是一样的:
A.         Hashtable ht = Hashtable.Synchronized(new Hashtable());
            lock (ht.SyncRoot)
            {
                //do somthing
            }
B         Private object syncRoot=new Object();
           lock(syncRoot)
           {
              //do something
           }
8#
 楼主| 发表于 2014-3-24 11:48:21 | 只看该作者
跳跃的看了下基于事件的异步,回来细读第一章
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-5 01:06 , Processed in 0.082556 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表