小弟写个了document view的程序,当打开一个文件的时候,从任务管理器中可以看到内存占用量飙升支160m。 而这个程序才4m,打开的文件大小也才4m,而且程序中那些的内的成员变量指定的空间也不多,怎么会占用这么多内存呢? 谢谢!

解决方案 »

  1.   

    后来跟踪代码发现是因为new几个很大的空间(这个程序是画一个wav文件,有很多点要记录,打个比方,一个6.6m的wav文件,采样点的bit是8bit的话,那就要记录6.6m个点(cpoint),则占用的空间是52.8m这个大),各位大虾有没有好方法,可以让它记录的点少点,然后画出来的wav失真又小)。
    还有,这个wav图要能放大缩小的,这也是现在为什么要记录所有的点的原因。
    tks
      

  2.   

    现在那些流行的看wav的软件: cool edit, sound forge等打开大的wav档案的时候,他们内存占用也不太多,而且放大后做scroll的时候,内存也没有增加,哪位大虾知道这两个软件的画wav图的原理是什么不?tks
      

  3.   

    可以用内存映射你的WAV文件,绘图的时候需要读取转换绘图,而不是保留转换后的点数据。这是典型的时间和空间的取舍问题,如果先处理好点信息,肯定占用巨大空间;如果需要的时候再处理点的转换,占用空间就少,但是速度肯定有影响。不过目前计算机速度和空间都比较充裕,还是自己决定吧。