社区
API
帖子详情
内存和虚拟内存!
niefuhua
2002-11-28 08:24:45
如何知道所有正在运行的程序各自占据了多少内存和虚拟内存?
...全文
53
5
打赏
收藏
内存和虚拟内存!
如何知道所有正在运行的程序各自占据了多少内存和虚拟内存?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
suntt
2002-11-29
打赏
举报
回复
UP
programart_life
2002-11-29
打赏
举报
回复
如果只针对主题问题,没有那么麻烦啊,用Winnt下的“任务管理器”就看见了!
ysp128
2002-11-29
打赏
举报
回复
由于窗体和控件是可见的,所以它们与其它对象的存活期不同。例如,即使释放了对窗体的所有引用,也不会关闭该窗体。Visual Basic 维护整个工程所有窗体的全局集合,只有当窗体卸载时才能从集合中删除该窗体。
同样的,Visual Basic 为每个窗体维护一个控件集合。可以从控件数组中加载或卸载控件,但简单地释放对控件的所有引用并不能撤消它。
详细信息 有关窗体和控件集合的内容已在本章的“Visual Basic 中的集合”中以作了讨论。
Visual Basic 窗体经历的状态
通常地,Visual Basic 窗体在整个存活期中有四种状态:
创建,但不加载。
加载,但不显示。
显示。
内存和资源完全收回。
在一定环境下,窗体可有第五种状态:当其中有一个控件仍被引用时,窗体处于卸载和未引用状态。
本主题将描述这些状态及状态之间的转换。
创建,但不加载
Initialize 事件是该状态开始的标志。因而,放在 Form_Initialize 事件过程中的代码,就是窗体创建时最先执行的代码。
处于这种状态时,窗体是作为一个对象而存在,但还没有窗口。而且它的控件也不存在。虽然该状态可能很短暂,但任何窗体都要经过该状态。
例如,如果执行 Form1.Show,则窗体被创建,Form_Initialize 开始执行;一旦 Form_Initialize 执行完毕,该窗体被加载,这是下一个状态。
在指定窗体为启动对象时会发生同样的过程。在“工程”菜单中,选取“工程属性”对话框,然后选定“通用”选项卡,就可以指定一个窗体为启动对象。一旦窗体被指定为启动对象,该窗体在工程启动时就被创建,并立即加载和显示。
注意 正如下面描述的,通过调用窗体的 Show,或使用内置的属性和方法,都可以从 Form_Initialize 中加载窗体。
保持创建,但不加载的状态
相反的,以下的代码创建 Form1 的实例,但不让其进入加载状态:
Dim frm As Form1
Set frm = New Form1
一旦 Form_Initialize 结束,在不强制加载窗体的情况下,所能执行的过程只有能添加到该窗体代码窗口的 Sub、Function 和 Property 过程。例如,可以给 Form1 添加以下的方法:
Public Sub ANewMethod()
Debug.Print "Executing ANewMethod"
End Sub
使用变量 frm(也就是 frm.ANewMethod),可以在窗体不强制进入下一状态的情况下调用该方法。同样的,可以调用 ANewMethod 创建窗体:
Dim frm As New Form1
frm.ANewMethod
由于 frm 声明为 As New,所以直到代码中首次使用该变量之前,上述情况是调用 ANewMethod,该窗体不能创建。上面的代码执行后,该窗体保持在已创建状态,但没有加载。
注意 只要运行 Form1.ANewMethod,无需声明窗体变量,也可以达到上述示例的效果。正如“定制窗体类”中所解释的,Visual Basic 为每一个窗体类创建一个隐含的全局变量。该变量名和类名相同,这可想象为 Visual Basic 进行了 Public Form1 As New Form1 声明。
可以在不加载窗体的情况下,任意运行定制的属性和方法。然而,一旦访问了窗体内置的任一属性或控件,该窗体就进入下一状态。
注意 把一个窗体分为两部分是非常有用的,一部分是代码部分,另一部分是可视部分。窗体加载前,只有代码部分在内存中。这样,可以不加载窗体的可视部分,而在代码中任意调用过程。
所有窗体都需经过的唯一状态
创建完毕但未加载,是所有窗体都需经过的唯一状态。如果上述示例中变量 frm 被设置为 Nothing,则该窗体在进入下一状态前就撤消了:
Dim frm As New Form1
frm.ANewMethod
Set frm = Nothing '窗体被撤消。
这样使用的窗体不会比类模块好,所以绝大部分窗体进入下一状态。
加载但不显示
Load 事件标志着此状态的开始。一旦窗体进入加载状态,Form_Load 事件过程中的代码就开始执行。
Form_Load 事件过程开始后,窗体上的所有控件都被创建和加载,而且该窗体有了一个窗口─ 是通过窗口句柄 (hWnd) 和设备描述体 (hDC) 完成的,尽管该窗口还未被显示。
任何窗体只有加载后才能可见。
很多窗体自动从创建但不加载状态进入加载但不显示状态。窗体如果满足以下的条件就会自动加载:
该窗体在“工程属性”对话框的“通用”选项卡中被指定为启动对象。
窗体中首先被调用的属性或方法是 Show 方法,正如示例 Form1.Show。
首先被调用的窗体属性或方法是窗体内置的成员,如上述例子中是 Move 方法。
注意 因为每个控件定义了窗体的一个属性,所以这种情况包括了窗体的所有控件;也就是说,为了访问 Command1 的 Caption 属性,就必须经过窗体的 Command1 属性:Command1.Caption。
niefuhua
2002-11-28
打赏
举报
回复
上面那位仁兄,可以说得详细一点吗?谢谢
SeeMeStudio
2002-11-28
打赏
举报
回复
使用WMI就可以得到。
4G
内存
不浪费 浅谈虚拟硬盘使用技巧
虚拟硬盘技术可以将
内存
虚拟出一个或者多个磁盘,利用
内存
的速度优势,可以加快磁盘的数据交换速度,从而提高电脑的运行速度。在当前32位系统下,无法识别超过3GB的
内存
容量,导致多余的1GB
内存
容量被浪费。幸好有了...
查看
内存
使用情况的汇编源代码
在该文件中,程序员会利用汇编指令来操作
内存
地址,比如`MOV`, `LDS`, 和 `LES`(Move, Load Segment, and Load Effective Segment)等,来读取和修改
内存
中的数据结构,如进程的虚拟地址空间或
内存
映射文件。...
物理
内存
和
虚拟
内存
当程序运行时,它只能看到和操作
虚拟
内存
空间,而不需要了解实际的物理
内存
情况。
虚拟
内存
技术的一个重要功能是将物理
内存
中暂时不需要的数据移动到磁盘上,从而释放物理
内存
以供其他程序使用。这种技术有效地提高了...
虚拟
内存
与物理
内存
的联系与区别
操作系统有
虚拟
内存
与物理
内存
的概念。在很久以前,还没有
虚拟
内存
概念的时候,程序寻址用的都是物理地址。程序能寻址的范围是有限的,这取决于CPU的地址线条数。比如在32位平台下,寻址的范围是2^32也就是4G。并且...
物理
内存
是什么是计算机的显卡
内存
吗,物理
内存
和
虚拟
内存
是什么意思怎么理解...
在计算机概念中,
内存
主要有物理
内存
和
虚拟
内存
,那么它们分别是什么意思呢?怎么理解物理
内存
和
虚拟
内存
呢?可能很多用户了解过却不知道具体含义,下面一起看看!物理
内存
和
虚拟
内存
是什么意思?物理
内存
,就是我们将...
API
1,488
社区成员
23,270
社区内容
发帖
与我相关
我的任务
API
VB API
复制链接
扫一扫
分享
社区描述
VB API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章