对于缓存的一些疑问:
1.用了缓存是不是可以减少sqlserver占的内存量?
2.是不是增了w3wp.exe占用内存的量?
3.如果w3wp.exe到内存限定值时回收的话,是不是缓存的内存就都清空了?
4.以下程序中的while循环中用car=new dpInfo(...);影响性能不,怎么设计最好?        public IList<dpInfo> GetCategories(int pcur, int psize, string sqlstr)
        {
            IList<dpInfo> categories = null;
            SqlParameter[] parms = new SqlParameter[]{
                new SqlParameter("@sql",SqlDbType.VarChar,1000),
                new SqlParameter("@PageCurrent", SqlDbType.Int,4),
                new SqlParameter("@PageSize", SqlDbType.Int,4),
                new SqlParameter("@PageCount", SqlDbType.Int,4)
            };
            parms[0].Value = sqlstr;
            parms[1].Value = pcur;
            parms[2].Value = psize;
            parms[3].Direction = ParameterDirection.Output;            using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.connectionString, CommandType.StoredProcedure, "sp_PageView", parms))
            {
                categories = new List<dpInfo>();
                rdr.NextResult();
                dpInfo cat = null;
                while (rdr.Read())
                {
                    cat = new dpInfo(Convert.ToInt32(rdr.GetValue(0)), Convert.ToInt32(rdr.GetValue(1)), Convert.ToInt32(rdr.GetValue(2)), Convert.ToInt32(rdr.GetValue(3)), ...);
                    categories.Add(cat);
                }
            }
            return categories;
        }

解决方案 »

  1.   

    对于缓存的一些疑问:
    1.用了缓存是不是可以减少sqlserver占的内存量?
    如果用了缓存的话,可以减少数据库的操作,是可以达到这个目的
    2.是不是增了w3wp.exe占用内存的量?

    3.如果w3wp.exe到内存限定值时回收的话,是不是缓存的内存就都清空了?
    这个不是很确定
    4.以下程序中的while循环中用car=new dpInfo(...);影响性能不,怎么设计最好?
    暂没有其它更好的办法以上是个人看法,不妥或有更好的方法的请指教
      

  2.   

    再多问一个问题5.如果调用以下代码ohtml会自动回收吗?如果不能怎么回收?        public static string =HtmlTop(string Title)
            {
                StringBuilder ohtml = new StringBuilder();
                ohtml.Append("...");
                return ohtml.ToString();
            }
      

  3.   

    缓存分为页面缓存和服务器缓存。
    至于问题1嘛,减少了对数据库的访问次数,间接的减少了数据库的内存占用。
    问题2,服务器缓存肯定是会增加服务端的内容,不过,这些都是小问题。可以忽略不计的。(PS,别告诉我用512内存的服务器。哈哈)
    问题3,可以设定优先级
    问题4:
    rdr.NextResult();这个是读取下一个select的方法。前提是查询语句中有多个Select。如果只有一个select,那就获取不到数据了。
    if(rdr!=null)
        categories = new List<dpInfo>();
    dpInfo cat = null;
    的写法是正确的。
      

  4.   

    不好意思再最后问一个问题6:什么样的操作耗cpu资源,什么样操作耗内存资源,大体举些例子,非常感谢!!!!!!!!
      

  5.   

    很高深的问题,学习一下!关于第5题帮你搜两篇文章
    http://topic.csdn.net/t/20060331/09/4653053.html
    http://topic.csdn.net/t/20041119/17/3569705.html
    http://wenwen.soso.com/z/q201129884.htm
      

  6.   


    如果文件太大,或者没有及时释放资源,就会占内存
    连续操作就会占CPU
    如果内存满了,或者换页太频繁了,也会影响CPU毕竟CPU是串行的,要一个一个来执行
      

  7.   

    缓存是用来处理经常进行的业务逻辑查询时使用的
    将要缓存数据中易变数据和不变数据分离,只缓存不变数据选择合适的缓存机制
    主要是缓存命中率,减少数据库的负载
    缓存就是时间控制
    有GC管理
    什么操作都消耗CPU,内存
      

  8.   

    5.如果调用以下代码ohtml会自动回收吗?如果不能怎么回收?C# code        public static string =HtmlTop(string Title)
            {
                StringBuilder ohtml = new StringBuilder();
                ohtml.Append("...");
                return ohtml.ToString();
            }
      

  9.   

    说StringBuilder()有量的限制,超出会溢出?如果防治(在考虑性能的前题下)
      

  10.   

    1.是的
    2.会
    3.应该不会清空,但是缓存可能出现问题
    4.你的每一个参数都Convert.ToInt32看可不可以不转,直接用string; dpInfo cat = null的申明可以放在外面,里面每次赋值null就可以了
    5.局部变量用完了会自动回收
    6.耗cpu的必然耗费内存,但是作为存储耗费的就是内存个人理解!