软件特别是一些较大的软件都是由很多很多模块组成的,
SW = A + B + C + D + E + ...
而我们知道,这些模块几乎不会同时处于运行状态。
一般情况下,可能只有一个或其中几个模块处在同时运行中。
如果在软件启动时就将这些模块全部初始化,
其好处是因为所有的模块都已经被初始化了,所以当要运行其中某个模块时可以快速的运行起来;
但我们知道内存在系统中总是紧俏资源(大部分的系统中配置的内存都不会是充裕的),
所以也就可能会带来两个问题:
1. 所有模块全部初始化,可能会导致软件启动时间变长;
2. 所有模块全部初始化,可能会导致内存紧张进而导致系统性能降低。
那要如何解决这种问题呢?
1. 在软件启动时,仅仅去初始化必须的模块;
2. 对于优先级不高同时比较耗时但是软件启动后也必须要初始化的,
创建一个低优先级的线程在后台"慢慢的"去运行;
3. 对于一些占用资源较多的模块,采用动态的方法分配和释放资源,
启动模块时分配资源,退出模块时将资源释放出去。