- 浏览: 507250 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (672)
- 随便写写 (3)
- javascript (16)
- Java exam (58)
- JSP exam (25)
- Servlet exam (25)
- Struts exam (24)
- Spring exam (24)
- Hibernate exam (19)
- EJB exam (25)
- SOA exam (6)
- AJAX exam (25)
- Web开发 exam (25)
- 软件工程 exam (25)
- 项目管理 exam (25)
- .NET exam (23)
- ASP.NET exam (24)
- C# exam (24)
- C++ exam (25)
- C语言 exam (13)
- ASP exam (0)
- PHP exam (0)
- Ruby exam (0)
- Python exam (0)
- Delphi exam (0)
- Linux exam (0)
- UNIX exam (25)
- 数据库 exam (24)
- Oracle exam (25)
- SQL Server exam (20)
- MySQL exam (16)
- Mobile开发 exam (10)
- 嵌入式开发 exam (6)
- 网络安全 exam (0)
- 网络技术 exam (0)
- 综合技术 exam (0)
- HR面试 exam (0)
- 英语面试 exam (0)
- 外企面试 exam (0)
- 软件测试 exam (0)
- QTP exam (0)
- LoadRunner exam (0)
- 网友面经 exam (0)
- 应届生 exam (0)
- 面试指导 exam (0)
- IQ测试 exam (0)
- Flex exam (2)
- uml-ea (1)
最新评论
-
dxking100:
远光没有笔式题的说..
最新远光软件笔试题面试题内容(1) -
heming_way:
谢谢,正在复习软件工程考试呢,呵呵
《软件工程》选择题 -
梅玲达:
可以更详细点吗?
Hibernate中Criteria 和DetachedCriteria的作用是什么? -
buptjian:
学习下,试试看,谢谢啊~
Prototype如何实现页面局部定时刷新? -
bubblegum89:
这个。。。和我笔试时候做的 感觉完全不一样
最新远光软件笔试题面试题内容(3)
.NET 平台在内存管理方面提供了GC(Garbage Collection),负责自动释放托管资源和内存回收的工作。但在以下两种情况需要我们手工进行资源释放:一、由于它无法对非托管资源进行释放,所以我们必须自己提供方法来释放对象内分配的非托管资源,比如你在对象的实现代码中使用了一个COM对象;二、你的类在运行是会产生大量实例(象 GIS 中的Geometry),必须自己手工释放这些资源以提高程序的运行效率
最理想的办法是通过实现一个接口显式的提供给客户调用端手工释放对象,System 命名空间内有一个 IDisposable 接口,拿来做这事非常合适,省得我们自己再声明一个接口了
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example20
{
class Program
{
class Class1 : IDisposable
{
//析构函数,编译后变成 protected void Finalize(),GC会在回收对象前会调用调用该方法
~Class1()
{
Dispose(false);
}
//通过实现该接口,客户可以显式地释放对象,而不需要等待GC来释放资源,据说那样会降低效率
void IDisposable.Dispose()
{
Dispose(true);
}
//将释放非托管资源设计成一个虚函数,提供在继承类中释放基类的资源的能力
protected virtual void ReleaseUnmanageResources()
{
//Do something…
}
//私有函数用以释放非托管资源
private void Dispose(bool disposing)
{
ReleaseUnmanageResources();
//为true时表示是客户显式调用了释放函数,需通知GC不要再调用对象的Finalize方法
//为false时肯定是GC调用了对象的Finalize方法,所以没有必要再告诉GC你不要调用我的Finalize方法啦
if (disposing)
{
GC.SuppressFinalize(this);
}
}
}
static void Main(string[] args)
{
//tmpObj1没有手工释放资源,就等着GC来慢慢的释放它吧
Class1 tmpObj1 = new Class1();
//tmpObj2调用了Dispose方法,传说比等着GC来释放它效率要调一些
//个人认为是因为要逐个对象的查看其元数据,以确认是否实现了Dispose方法吧
//当然最重要的是我们可以自己确定释放的时间以节省内存,优化程序运行效率
Class1 tmpObj2 = new Class1();
((IDisposable)tmpObj2).Dispose();
}
}
}
最理想的办法是通过实现一个接口显式的提供给客户调用端手工释放对象,System 命名空间内有一个 IDisposable 接口,拿来做这事非常合适,省得我们自己再声明一个接口了
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example20
{
class Program
{
class Class1 : IDisposable
{
//析构函数,编译后变成 protected void Finalize(),GC会在回收对象前会调用调用该方法
~Class1()
{
Dispose(false);
}
//通过实现该接口,客户可以显式地释放对象,而不需要等待GC来释放资源,据说那样会降低效率
void IDisposable.Dispose()
{
Dispose(true);
}
//将释放非托管资源设计成一个虚函数,提供在继承类中释放基类的资源的能力
protected virtual void ReleaseUnmanageResources()
{
//Do something…
}
//私有函数用以释放非托管资源
private void Dispose(bool disposing)
{
ReleaseUnmanageResources();
//为true时表示是客户显式调用了释放函数,需通知GC不要再调用对象的Finalize方法
//为false时肯定是GC调用了对象的Finalize方法,所以没有必要再告诉GC你不要调用我的Finalize方法啦
if (disposing)
{
GC.SuppressFinalize(this);
}
}
}
static void Main(string[] args)
{
//tmpObj1没有手工释放资源,就等着GC来慢慢的释放它吧
Class1 tmpObj1 = new Class1();
//tmpObj2调用了Dispose方法,传说比等着GC来释放它效率要调一些
//个人认为是因为要逐个对象的查看其元数据,以确认是否实现了Dispose方法吧
//当然最重要的是我们可以自己确定释放的时间以节省内存,优化程序运行效率
Class1 tmpObj2 = new Class1();
((IDisposable)tmpObj2).Dispose();
}
}
}
发表评论
-
非常详细的C#面试题集
2010-08-12 16:46 8261、在C#中,string str = null与string ... -
说出你对remoting 和webservice的理解和应用
2010-08-12 16:46 693web服务,是利用SOAP(简单对象访问协议,Simple O ... -
What’s the difference between an interface and abstract class? (接口与抽象类有什么区别)
2010-08-12 16:46 616接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件, ... -
P/Invoke是什么?
2010-08-12 16:46 713在受控代码与非受控代码进行交互时会产生一个事务(transit ... -
params 有什么用?
2010-08-12 16:46 750params 关键字在方法成员的参数列表中使用,为该方法提供了 ... -
编写一个类体现构造,公有,私有方法,静态,私有变量
2010-08-12 16:46 687public class stu{private string ... -
别名指示符是什么?
2010-08-12 16:46 782通过别名指示符我们可以为某个类型起一个别名主要用于解决两个命名 ... -
Hashtable 添加内容的方式有哪几种,有什么区别?
2010-08-12 16:46 665Hashtable.Add()方法;实例化一个Hashtabl ... -
string = null 和string = “”的区别
2010-08-12 16:46 766答:前者没有分配内存控件,后着分配了 -
用C#语言写出与SQLSERVER访问时的具体过程
2010-08-12 16:46 703用C#语言写出与SQLSERVER访问时的具体过程。在涉及到S ... -
南京AJS计算机公司笔试题
2010-08-12 16:46 7191.英文解释:Appdomain,Assembly.Refle ... -
抽象类和接口的区别?
2010-08-12 16:46 619抽象类(abstract class)可以包含功能定义和实现, ... -
Can a struct inherit from another class? (结构体能继承类吗)
2010-08-12 16:46 1056每个结构都派生于System.ValueType,它又派生于S ... -
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2010-08-12 16:46 7851.下面是M层的,其他层的自己写using System.Da ... -
什么是反射?
2010-08-12 16:46 794反射,Reflection,通过它我们可以在运行时获得各种信息 ... -
What’s the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2010-08-12 16:46 634答:Debug类里所提供的函数仅在编译时带#Debug宏参数才 ... -
explicit 和 implicit 的含义?
2010-08-12 16:46 802explicit 和 implicit 属于转换运算符,如用这 ... -
用C#语言写出在本地创建一个UDP接收端口的具体过程
2010-08-12 16:46 884答:const int port = 8000 ;//定义端口 ... -
Can a struct inherit from another struct? (结构体能继承结构体吗)
2010-08-12 16:46 822不能 -
如何选择使用结构还是类
2010-08-12 16:46 5291.堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好 ...
相关推荐
1.静态成员和非静态成员的区别? 2.const 和 static ...20.如何手工释放资源? 21.P/Invoke是什么? 22.StringBuilder 和 String 的区别? 23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射?
1.静态成员和非静态成员的区别? 2.const 和 static ...20.如何手工释放资源? 21.P/Invoke是什么? 22.StringBuilder 和 String 的区别?23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射?
20. 如何手工释放资源? 使用IDisposable接口的Dispose方法手工释放非托管资源,例如文件流、数据库连接等。对于托管资源,垃圾回收器会自动处理。 21. P/Invoke是什么? P/Invoke(Platform Invoke)是.NET ...
20. 如何手工释放资源? 手动释放资源通常通过使用 Dispose() 方法或 finally 块来实现,确保在不再需要时释放非托管资源。 21. P/Invoke 是什么? P/Invoke(Platform Invoke)是 .NET Framework 提供的一种机制...
20. 如何手工释放资源? 答案:可以使用using语句或手动调用Dispose方法。 21. P/Invoke 是什么? 答案:P/Invoke 是一个平台 invoke 机制,用于调用非托管代码。 22. StringBuilder 和 String 的区别? 答案:...
如何手工释放资源? 使用`Dispose()`方法或`using`语句可以手动释放不受托管的资源,确保资源的正确清理。 ### 21. P/Invoke是什么? P/Invoke(Platform Invoke)是一种机制,允许C#调用外部的非托管代码,通常是...
### 手工释放Linux内存详解 #### 一、引言 在Linux环境下,内存管理是一项重要的任务,尤其在服务器环境中更是如此。随着程序的运行,Linux操作系统会利用空闲内存作为缓存,以提高文件读取效率。然而,这也可能...
在Linux操作系统中,物理内存是非常宝贵的资源,操作系统会使用各种手段来优化内存的使用。一个常见的现象是,在Linux系统中频繁操作文件,比如复制、读取或者写入,会导致物理内存很快被占用。当这些操作结束之后,...
而Lock一定要求程序员手工释放.并且必须在finally从句 中释放,如果没有答出在finally中释放不得分.就如Connection没有在finally中关闭一 样.连最基本的资源释放都做不好,还谈什么多线程编程. 6.EJB规范规定...
- **关闭不必要的服务**:Windows XP中有很多默认开启的服务,其中有些可能是不必要的,通过服务管理器可以关闭这些服务来释放资源。 - **更新驱动程序**:确保所有硬件驱动都是最新版本,新驱动通常会优化性能和...
总的来说,这款名为“最好的手工杀毒软件-绿色”的程序,结合了高效的手动操作和驱动级保护,通过随机释放机制增强了软件的生存能力,同时保持了轻量级和用户友好的特性。开发者对软件的持续优化和对BUG的修复显示了...
我们关注市场需求,尤其针对年轻人和亲子群体,为他们提供一个释放创造力的空间。公司预计在初期投入资金用于场地租赁、设备购置、原材料采购以及市场营销,目标是打造成为当地知名的手工坊品牌,并在稳定运营后实现...
捏捏乐DIY手工坊的设立源于对现代人压力释放和创意表达需求的洞察。随着生活质量的提高,人们越来越重视精神层面的满足,DIY手工活动作为一种寓教于乐、放松心情的方式,逐渐受到各年龄段人群的喜爱。手工坊提供一个...
美术手工教学在学前教育中扮演着至关重要的角色,它不仅是儿童早期教育的重要组成...因此,教师和家长都应该重视并积极参与到美术手工教学中,为孩子提供丰富的创作环境和资源,让孩子们在玩乐中学习,在学习中成长。
3. **启动项和服务**:Office 2007可能会设置一些开机启动项和服务,手工卸载工具会检查并停止或移除这些启动项,释放系统资源。 4. **依赖库和组件**:Office 2007安装时会添加一些系统组件和库文件,手工卸载工具...
当某些程序无响应或者我们需要强制结束它们以便释放资源时,"手工杀死列表中正在运行的程序名称"这一操作就显得尤为必要。这个过程涉及到对系统进程的理解、查找以及终止。 首先,我们需要了解什么是进程。在操作...
5. 农业革命:农业革命是工业革命之前发生的一系列农业技术改进,提高了农业生产力,释放了劳动力,为工业革命提供了必要的劳动力资源。 6. 工业革命:工场手工业时期为工业革命奠定了基础,工业革命是人类历史上的...