读书人

CppWebBrowser两有关问题,高分送上

发布时间: 2012-03-26 15:46:56 作者: rapoo

CppWebBrowser两问题,高分送上
现在碰到一个非常致命的问题,使用CppWebBrowser消耗内存过大,而且不能释放内存(最小化操作可以释放),这个问题应该是因为IE内核的问题导致的。现只想到两个解决方案,而且可行性都太差。
1、解决内存释放的问题,google了不少资料,都没有找到较理想的方案。如果定期最小化,操作性,效果都不理想。
2、针对弹出窗口,采用另外一个进程打开。针对弹出窗口的CppWebBrowser能够快速释放,但引发另外一个问题,如何传递Session到另外一个进程。
目前看来,解决IE内核内存释放的问题和不同进程间的Session共享问题都不好解决的。如果两个进程的程序都自已的编写,能否通过数据共享实现,Session的共享呢?如采用dll数据共享等技术呢。

归纳如下,主要问题:
1、CppWebBrowser 内存释放
2、不同进程之间的Session共享

同时,请有熟悉的这方面的朋友指点一二,高分送上。

[解决办法]
内存控制和Session是否能共享都是IE内核控制的。恐怕不好实现
[解决办法]
减少内存占用,你可以增加如下代码:

C/C++ code
    if(Win32Platform == VER_PLATFORM_WIN32_NT)    {        SetProcessWorkingSetSize(GetCurrentProcess(), -1, -1);    }
[解决办法]
在创建CppWebBrowser之前加上OleInitialize(NULL) 初始化ole,对减少内存能起很大作用,且打开网页内容不能复制等问题一并解决了
释放后加上OleUninitialize();
[解决办法]
SetProcessWorkingSetSize我实际使用效果挺好的,应用并为出现不稳定。而且确实可以减少内存的使用。
[解决办法]
我通常情况下是在系统启动后(内存加载完毕后)使用一次。
你也可以在窗口打开后使用一次。
这个API应该是将一些暂时不用的内存页释放掉,我不建议频繁使用,没有太多意义。只会加重内存交换和再次分配次数。

读书人网 >C++ Builder

热点推荐