您现在的位置: 爱51代码网 >> 范文 >> 文章正文
qml和c++交互 用的modelist 会造成内存泄露如何处理

qml和c++交互 用的modelist 会造成内存泄露如何处理

qml和c++交互 用的modelist 会造成内存泄露。大家如何处理的?

 Using a standard QList  instead of QDeclarativeListProperty,
 
will not take care of memory management and can cause your application to leak.
 
In addition QList does not provide notification signals when children change
内存泄露,给毛的List例子啊

不好意思,我以为是非常驻程序呢。

你说的是ListModel吧?

如果ListModel不是为了显示的话,我会在javascript空间里var一个数组什么的,用c++填入数据。

如果用于显示的话就弃用ListModel,用js里的数据动态生成显示。反正ListModel也不是很好用。

对于硬件不富裕并且是工业级应用的话我更倾向于纯C++,心里托底,qml还不是很成熟,小bug我就发现不少。类似弹出提示框的组件都有可能会要你进程的命,时间充足的话你就试试看吧。

如果交互不复杂的话推荐你用QWidget里的paintEvent自已画吧,美工做好界面,用drawPixmap和drawText就行的。响应mousePressEvent等等即可。活有点糙,但稳当。

你是说用到ListView上吗?

js数组不能直接用,我是用js函数动态更新ListModel。ListModel有clear()接口的,只是从没注意过clear后内存是否泄露的问题。

qml和js都是解释性的语言,想要它们管理好内存不现实的。js的内存回收记得好象是类似于.net ,就是说无法控制系统真的实时释放那一部分内存,那等系统觉得该去施放内存了才会真的释放掉。qml类似于css而且和js同一空间,我想和js的回收机制会有千丝万缕的联系。

铁心要用qml的话你暴力测试一下,看看能否泄露到程序崩溃,我猜到一定程度后会有回收机制出来干预的。对于精确释放qml占用的内存我持99%纯度的悲观态度。


js数组不能直接用的。我是用js函数动态更新ListModel.

js和qml都是解释性的语言,内存回收类似于.net ,我对精确释放占用内存持决对悲观态度。

不过你可以暴力测试一下,看看能否泄露到程序崩溃,我想到一定程序会有回收机制跳出来干预的。

还有个变通的方式,就是你在ListModel预生成一定数据条数,要更新的话就依次付值,不要clear后再append.数据太多就做一下分页。没有动态分配内存也就没有泄露了吧,不知你具体应用场景,仅供参考。

不过以我的qml经验真的很担心你用qml做工业级应用,现在回头成本算低的。

就算不回头也要和你上司通个气,打个预防针,想好退路哦。

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的验证
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    asp中有一段javascipt的网页鼠标
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    android studio 无法启动
    Android 2.3.5系统内置图片G
    Android http post 上传图片
    安卓本地软件修改密码的实现
    jni thread 退出异常 , nati
    error: Error: No resource 
    Android 3.2上的一个大BUG
    Android 视频流远程监控程序
    java 十六进制字符串转换问题
    QT如何实现左右滑动的按钮
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |