07 2011 档案

摘要:在C#中使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。 但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。 实例化新对象过程: 如图 首先、计算字段所需空间和对象所需空间。 对象所需空间包括两部分,同步块索引和类型对象指针。 再次、分配物理内存,新对象指针指象下一个可用内存区域。垃圾回收过程 如下图• 标记阶段:从根标记遍历到的对象。 阅读全文
posted @ 2011-07-30 13:25 贺俊峰 阅读(350) 评论(0) 推荐(0)
摘要:隔离应用程序的原因在于内存地址是与进程相关的,两个进程的内存不可以互相访问。 隔离进程的优点如下图:• 在一个应用程序中出现的错误不会影响其他应用程序。 • 能够在不停止整个进程的情况下停止单个应用程序。 • 在一个应用程序中运行的代码不能直接访问其他应用程序中的代码或资源。 • 代码行为的作用范围由它运行所在的应用程序决定。 • 向代码授予的权限可以由代码运行所在的应用程序域来控制。 阅读全文
posted @ 2011-07-30 13:11 贺俊峰 阅读(315) 评论(0) 推荐(0)
摘要:/// <summary> /// 自定义List /// </summary> /// <typeparam name="T">列表中元素的类型</typeparam> class MyList<T> : IEnumerable { T[] t = new T[0]; public MyList() { } public MyList(int capacity) { this.Capacity = capacity; } int count = 0; /// <summary> /// MyList& 阅读全文
posted @ 2011-07-28 20:06 贺俊峰 阅读(582) 评论(0) 推荐(0)
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Collections;namespace MyArrayList_hjf{ class MyArrayList : IEnumerable { object[] objarr = new object[0]; int count; public MyArrayList() { } public MyArrayList(int capacity) { this.Capacity = capacity; } 阅读全文
posted @ 2011-07-20 19:37 贺俊峰 阅读(857) 评论(0) 推荐(0)
摘要:ArrayList类是一个特殊的数组。它来自于System.Collections命名空间;通过添加和删除元素,就可以动态改变数组的长度。一、优点1)支持自动改变大小的功能2)可以灵活的插入元素3)可以灵活的删除元素二、局限性跟一般的数组比起来,速度上差些。因为它是动态数组,初始化大小容量4,当数据存满时扩容是以当前数组容量大小的2倍扩容,之后再把数组元素一个一个的存入,数组在扩容时浪费一定的内存空间,和存储时间,而且,元素添加是一个装箱的过程,所以说,跟一般的数组比起来,速度上差些。 三、ArrayList初始化 ArrayList有三种初始化 1)不初始化起容量 ArrayList al 阅读全文
posted @ 2011-07-19 20:29 贺俊峰 阅读(28961) 评论(1) 推荐(1)
摘要:static void Main(string[] args) { while (true) { Console.WriteLine("输入一串字符"); string str = Console.ReadLine();//定义一个变量str用来存储输入的字符串 int num= Encoding.Default.GetByteCount(str);//Encoding.Default.GetByteCount(str)在系统默认下计算对字符进行编码是所产生的字节数 intlen = str.Length;//获取字符串的长度 Console.WriteLine(" 阅读全文
posted @ 2011-07-19 11:19 贺俊峰 阅读(1623) 评论(0) 推荐(1)