日期:2014-05-18  浏览次数:20944 次

继续关注~~关于Windows程序的运行原理。
最近在考虑这么个问题:
一个软件发布处理,可能会有两种形式:
1. 单个exe文件
2. exe主文件+dll模块文件

由于软件本身比较大,因此第一种形式发布的exe文件容量也比较大,可能有几十MB;而第二种形式发布的软件,因为很多功能都分布到了dll中,所以exe主文件可能只有几百KB。

我想知道的是:这两种形式在小内存机器上(256MB)哪种会更流畅些、更省资源些?

也就是说,这两种形式在运行的时候,系统是怎样分配系统资源的?第一种,几十MB的exe全部放到内存吗?第二种,exe全部占内存,然后用到dll的时候才把相应的dll放到内存吗?

------解决方案--------------------
动态链接库英文为DLL,是Dynamic Link Library 的缩写形式

DLL都是在运行时动态加载的,并不是一次性加载。

但是现实是程序启动时需要加载大部分的DLL,除了一些独立的模块。

不管出于什么方面考虑,写一个大的exe都是没有优势的。
------解决方案--------------------
可以用VS调试的时候把 模块 窗口打开,自己观察Dll的加载情况
------解决方案--------------------
一般的来说,分开DLL的比较好。


但是吧还有另外一些小路可以说是能改变二者的优劣:
1.exe在运行后,将自身分解成若干文件,放在目录中,运行结束后删除,然后按需使用那些小文件。
2.exe+dll的那种在运行后,将所有dll全部加在到内存中。


这样而这的优劣又反过来了。

其实程序的优劣不是由应用程序在电脑中的样式和文件个数决定的,决定因素在于开发这个程序的人的水平和对内存使用的掌控能力。
------解决方案--------------------
是可以分开加载的 这些东西都放在.net的程序集文件里面 你愿意甚至可以放到网上用的是和再让程序去网上下载
------解决方案--------------------
探讨

动态链接库英文为DLL,是Dynamic Link Library 的缩写形式

DLL都是在运行时动态加载的,并不是一次性加载。

但是现实是程序启动时需要加载大部分的DLL,除了一些独立的模块。

不管出于什么方面考虑,写一个大的exe都是没有优势的。

------解决方案--------------------
探讨
一般的来说,分开DLL的比较好。


但是吧还有另外一些小路可以说是能改变二者的优劣:
1.exe在运行后,将自身分解成若干文件,放在目录中,运行结束后删除,然后按需使用那些小文件。
2.exe+dll的那种在运行后,将所有dll全部加在到内存中。


这样而这的优劣又反过来了。

其实程序的优劣不是由应用程序在电脑中的样式和文件个数决定的,决定因素在于开发这个程序的人的水平和……

------解决方案--------------------
http://topic.csdn.net/u/20070904/12/d8333fa6-8bad-4260-8a53-5a00a678aa59.html?seed=1402501095

http://www.cnblogs.com/wyi23/archive/2005/03/23/123974.html


看看这俩
------解决方案--------------------
只告诉你一个肯定的结论,性能一样。
------解决方案--------------------
推荐: exe主文件+dll模块文件 
这样方便开发,用到哪个dll才加载哪个dll,大部分程序这样用流畅些、省资源些.
现在一般是做绿色软件才一个exe,还要考虑是否把.net库也包进去.