30楼#
发布于:2004-12-01 17:27
Java程序的内存分配情况又是如何呢?效率很低的说
|
|
|
31楼#
发布于:2004-12-01 17:27
我想从程序设计角度说说这个问题。
分配过量的内存,在使用完还不释放,这种方法叫做内存池(memory pool)。这种方法主要的功能就是节约内存,太高内存使用率,而且提高程序运行的效率。 为什么这么说呢: 首先理解动态分配的内存的数据结构,一块内存如果被动态分配,就会出现在栈上(也叫栈内存),其结构是个双向链表的一个结点,链表就像用绳子把一堆内存块穿起来一样,能够找到哪些是用了的,哪些是没用的,结点里还保存了一些其他信息。所以每次分配和释放内存,都是一次对链表的一次遍历,而且每分配一个内存块,其结点结构占据了一定的空间(这部分空间对应用来说是没用的)。 内存池就是提前分配大块的内存,然后慢慢用,不够啦再申请大块的,这样节省了分配的时间,也节省了结点占据的内存。就像一次去食堂打2000个馒头慢慢吃,省去了2000次排队的时间。 内存池还解决一个内存碎块的问题。内存碎块是这样的,假设现在内存都是连续的,你分配了一个100byte的内存,然有又分配了50字节,最后又分配了200字节的内存。这时当你把50字节的内存释放了,内存里就出现了一个“碎块”,这个碎块只有在被分配51字节以下的情况下才能被使用。可想而知,当时间趋于无穷大,那么内存里只有1字节的碎块,也就只能分配1字节的东西。很多程序不能连续运行30天,甚至1天,都是这个原因。 那么这种方法会不会浪费内存呢? 不会!这里有个物理内存和虚拟内存的概念。物理内存就是你花钱买的内存,机器配置上写的就是。虚拟内存是虚拟的,每个进程都有4G,或者在物理内存里,或者在硬盘上(等用的时候在调到内存里),或者根本就没有。应用程序分配的是虚拟内存,在使用的时候才会被调入物理内存,如果长时间不使用会被操作系统调出。 内存池分配的大块内存,开始并没使用,对于操作系统就是“登记”一下,并没真正的占内存。有当用的时候才会使用,等不用的时候系统会把它交换到磁盘上的。 所以firefox的内存策略是比较合理的,事实上很多优秀的服务器软件也是这么设计的,甚至有些数据库软件采取“有多少吃多少”的内存策略。其实他们都是为了节约真正宝贵的“物理内存”和cpu时间。 |
|
32楼#
发布于:2004-12-01 17:27
不管用,最小化不能释放内存,我没有用最小化到系统托盘的插件,最小化到任务栏后,占用内存还是60多M,我只开了5各窗口,即使把firefox关掉,占用内存也不会释放多少,我只好注销一次,没有办法。
现在只开了3个标签,物理内存使用48了,虚拟内存使用了30M |
|
|
33楼#
发布于:2004-12-01 17:27
真无聊
先不说FF好不好 那些内存整理工具 别人开发出来是无聊用的啊 |
|
34楼#
发布于:2004-12-01 17:27
无论LINUX还是WINDOWS都是要尽最大的可能将那几根条子用完,不用就叫浪费,就是,而且linux下都是物理内存用完,才会用到虚拟内存,内存不用不就白买了吗。 |
|
35楼#
发布于:2004-12-01 17:27
我也不知道为什么?可能我的机器配置有问题!
我也不知道为什么?可能我的机器配置有问题!我开ff内存占用总是很大,最少30m
我插件没装什么,就多窗口,还有一个下载用的什么got,我2k xp 2003se 全部试过了。 |
|
36楼#
发布于:2004-12-01 17:27
如果占了内存和CPU的资源,换来更高的响应速度,未尝不可呢?
我的电脑上用maxthon和ff+tbp开同样多(10个以上)的网页,虽然maxthon内存占用较少,但响应速度ff却明显快多了,请问你宁愿多占点内存还是等待程序反映呢? 内存不用那干什么呢?无论LINUX还是WINDOWS都是要尽最大的可能将那几根条子用完,不用就叫浪费 所以我认为没必要刻意的要求某个软件占用内存否?尤其是浏览器这样常用的东西! |
|
37楼#
发布于:2004-12-01 17:27
|
|
38楼#
发布于:2004-12-01 17:27
帮顶,不要沉。
|
|
39楼#
发布于:2004-12-01 17:27
如果用IE的话,占用内存可能会更大吧。如果一旦停止响应那你就完了,一结束任务网页就全没了。
|
|
|
40楼#
发布于:2004-12-01 17:27
没有那么夸张的反差吧,我这差不多的啦!
|
|
41楼#
发布于:2004-12-01 17:27
|
|
42楼#
发布于:2004-12-01 17:27
對呢, 我現在用aston的shell, 配上redfox, 也沒有什麼問題, 最小化後佔用內存少了整整一半, 何況每部電腦情況不用, 若覺得內存不夠大可以去找一些傻化內存的工具
|
|
43楼#
发布于:2004-12-01 17:27
以前有不少讨论这个问题的帖子,不要光在Windows的Shell下比较
完全释放Firefox,关于Windows Shell,Firefox,IE以及Expl 超强横评!请不要再说Maxthon比Firefox资源占用小! |
|
44楼#
发布于:2004-12-01 17:27
|
|
|