viewtheard
千年狐狸
千年狐狸
  • UID2383
  • 注册日期2005-01-20
  • 最后登录2024-05-19
  • 发帖数2006
  • 经验518枚
  • 威望1点
  • 贡献值392点
  • 好评度20点
  • 社区居民
  • 忠实会员
30楼#
发布于:2004-12-01 17:27
Java程序的内存分配情况又是如何呢?效率很低的说
My Technical Blog: http://art-technical.blogspot.com/
du2050
小狐狸
小狐狸
  • UID3211
  • 注册日期2005-02-21
  • 最后登录2005-02-21
  • 发帖数1
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
31楼#
发布于:2004-12-01 17:27
我想从程序设计角度说说这个问题。

分配过量的内存,在使用完还不释放,这种方法叫做内存池(memory pool)。这种方法主要的功能就是节约内存,太高内存使用率,而且提高程序运行的效率。

为什么这么说呢:
首先理解动态分配的内存的数据结构,一块内存如果被动态分配,就会出现在栈上(也叫栈内存),其结构是个双向链表的一个结点,链表就像用绳子把一堆内存块穿起来一样,能够找到哪些是用了的,哪些是没用的,结点里还保存了一些其他信息。所以每次分配和释放内存,都是一次对链表的一次遍历,而且每分配一个内存块,其结点结构占据了一定的空间(这部分空间对应用来说是没用的)。

内存池就是提前分配大块的内存,然后慢慢用,不够啦再申请大块的,这样节省了分配的时间,也节省了结点占据的内存。就像一次去食堂打2000个馒头慢慢吃,省去了2000次排队的时间。

内存池还解决一个内存碎块的问题。内存碎块是这样的,假设现在内存都是连续的,你分配了一个100byte的内存,然有又分配了50字节,最后又分配了200字节的内存。这时当你把50字节的内存释放了,内存里就出现了一个“碎块”,这个碎块只有在被分配51字节以下的情况下才能被使用。可想而知,当时间趋于无穷大,那么内存里只有1字节的碎块,也就只能分配1字节的东西。很多程序不能连续运行30天,甚至1天,都是这个原因。


那么这种方法会不会浪费内存呢?
不会!这里有个物理内存和虚拟内存的概念。物理内存就是你花钱买的内存,机器配置上写的就是。虚拟内存是虚拟的,每个进程都有4G,或者在物理内存里,或者在硬盘上(等用的时候在调到内存里),或者根本就没有。应用程序分配的是虚拟内存,在使用的时候才会被调入物理内存,如果长时间不使用会被操作系统调出。
内存池分配的大块内存,开始并没使用,对于操作系统就是“登记”一下,并没真正的占内存。有当用的时候才会使用,等不用的时候系统会把它交换到磁盘上的。

所以firefox的内存策略是比较合理的,事实上很多优秀的服务器软件也是这么设计的,甚至有些数据库软件采取“有多少吃多少”的内存策略。其实他们都是为了节约真正宝贵的“物理内存”和cpu时间。
shxy_1
狐狸大王
狐狸大王
  • UID3032
  • 注册日期2005-02-15
  • 最后登录2018-10-16
  • 发帖数597
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
32楼#
发布于:2004-12-01 17:27
不管用,最小化不能释放内存,我没有用最小化到系统托盘的插件,最小化到任务栏后,占用内存还是60多M,我只开了5各窗口,即使把firefox关掉,占用内存也不会释放多少,我只好注销一次,没有办法。
现在只开了3个标签,物理内存使用48了,虚拟内存使用了30M
昨天晚上做了个梦,梦见我去拿刀砍人,却被别人用更长的刀给吓得到处乱穿。 起来才明白,自己不是作蛊惑仔的料,还是好好学习吧!
itwhen
小狐狸
小狐狸
  • UID3191
  • 注册日期2005-02-21
  • 最后登录2005-02-21
  • 发帖数2
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
33楼#
发布于:2004-12-01 17:27
真无聊
先不说FF好不好
那些内存整理工具 别人开发出来是无聊用的啊
su100
火狐狸
火狐狸
  • UID107
  • 注册日期2004-11-25
  • 最后登录2013-08-19
  • 发帖数289
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
34楼#
发布于:2004-12-01 17:27
无论LINUX还是WINDOWS都是要尽最大的可能将那几根条子用完,不用就叫浪费

所以我认为没必要刻意的要求某个软件占用内存否?尤其是浏览器这样常用的东西!
,就是,而且linux下都是物理内存用完,才会用到虚拟内存,内存不用不就白买了吗。
lailay
  • UID1869
  • 注册日期
  • 最后登录
  • 发帖数
  • 经验
  • 威望
  • 贡献值
  • 好评度
35楼#
发布于:2004-12-01 17:27
我也不知道为什么?可能我的机器配置有问题!
我也不知道为什么?可能我的机器配置有问题!我开ff内存占用总是很大,最少30m
我插件没装什么,就多窗口,还有一个下载用的什么got,我2k  xp  2003se 全部试过了。
neuron
小狐狸
小狐狸
  • UID930
  • 注册日期2004-12-15
  • 最后登录2006-11-01
  • 发帖数92
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
36楼#
发布于:2004-12-01 17:27
如果占了内存和CPU的资源,换来更高的响应速度,未尝不可呢?

我的电脑上用maxthon和ff+tbp开同样多(10个以上)的网页,虽然maxthon内存占用较少,但响应速度ff却明显快多了,请问你宁愿多占点内存还是等待程序反映呢?

内存不用那干什么呢?无论LINUX还是WINDOWS都是要尽最大的可能将那几根条子用完,不用就叫浪费

所以我认为没必要刻意的要求某个软件占用内存否?尤其是浏览器这样常用的东西!
堕落风中
小狐狸
小狐狸
  • UID2305
  • 注册日期2005-01-18
  • 最后登录2005-01-18
  • 发帖数5
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
37楼#
发布于:2004-12-01 17:27
109czp

请不要用估计这两个字,我实际试验过。

环境win2003 en standard.

myie2 ,firefox1.0 中文简体加ad,tbe,gmail,扩展。

完全一样的网页,myie2在cpu和内存方面绝对占优。


而且ff最大的问题是,占了内存不知道释放
回到原帖

同意...myie2在这方面的确是不错的
ff在这方面要改进了
有时候我甚至觉得比IE还要占得多
RealGhost
小狐狸
小狐狸
  • UID2279
  • 注册日期2005-01-17
  • 最后登录2005-06-23
  • 发帖数5
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
38楼#
发布于:2004-12-01 17:27
帮顶,不要沉。
橡皮鸭子
火狐狸
火狐狸
  • UID2126
  • 注册日期2005-01-13
  • 最后登录2008-02-26
  • 发帖数202
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
39楼#
发布于:2004-12-01 17:27
如果用IE的话,占用内存可能会更大吧。如果一旦停止响应那你就完了,一结束任务网页就全没了。
_______________________________ 吃最大的肉,喝最辣的酒,泡最美的妞,教最真的狐朋狸友。
Zene
火狐狸
火狐狸
  • UID820
  • 注册日期2004-12-13
  • 最后登录2007-08-21
  • 发帖数111
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
40楼#
发布于:2004-12-01 17:27
没有那么夸张的反差吧,我这差不多的啦!
hmony
火狐狸
火狐狸
  • UID1954
  • 注册日期2005-01-09
  • 最后登录2010-05-15
  • 发帖数172
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
41楼#
发布于:2004-12-01 17:27
mugedy:简体1.0增强版我没试过,反正我个人在我用过的版本中觉得官方正式版尤其是最新的测试版(当然其中会有bug)是内存释放最好的回到原帖


最新测试版?? 请问在那里有得下载?
我现在只开一个 社区的TAB 内存占用78M 虚拟内存占用60M了!
困惑中?为什么我的FF 占用内存那么大?!
Crescal
小狐狸
小狐狸
  • UID2107
  • 注册日期2005-01-12
  • 最后登录2014-07-27
  • 发帖数32
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
42楼#
发布于:2004-12-01 17:27
對呢, 我現在用aston的shell, 配上redfox, 也沒有什麼問題, 最小化後佔用內存少了整整一半, 何況每部電腦情況不用, 若覺得內存不夠大可以去找一些傻化內存的工具
fiag
管理员
管理员
  • UID1188
  • 注册日期2004-12-21
  • 最后登录2024-04-22
  • 发帖数4681
  • 经验686枚
  • 威望0点
  • 贡献值402点
  • 好评度51点
43楼#
发布于:2004-12-01 17:27
以前有不少讨论这个问题的帖子,不要光在Windows的Shell下比较

完全释放Firefox,关于Windows Shell,Firefox,IE以及Expl

超强横评!请不要再说Maxthon比Firefox资源占用小!
gamer
小狐狸
小狐狸
  • UID711
  • 注册日期2004-12-10
  • 最后登录2008-09-15
  • 发帖数88
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
44楼#
发布于:2004-12-01 17:27
109czp

请不要用估计这两个字,我实际试验过。

环境win2003 en standard.

myie2 ,firefox1.0 中文简体加ad,tbe,gmail,扩展。

完全一样的网页,myie2在cpu和内存方面绝对占优。


而且ff最大的问题是,占了内存不知道释放
回到原帖



myie2使用IE内核.内存不只是在单一进程的.
http://www.a9vg.com/user/96000/95856/picbox/1162400461.jpg
兄弟如手足,老婆如衣服,谁动我衣服,我砍他手足;
老婆如衣服,兄弟如手足,谁动我手足,我穿他衣服。
游客

返回顶部