开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 274|回复: 9
收起左侧

[易语言] 内存分配异常

[复制链接]
结帖率:0% (0/1)
发表于 2024-12-4 11:21:37 | 显示全部楼层 |阅读模式   江西省景德镇市
20精币


  
子程序名返回值类型公开备 注
获取参数信息  
变量名类 型静态数组备 注
属性标题文本型 
属性内容0文本型 
属性内容1文本型 
属性内容2文本型 
属性内容3文本型 
属性内容4文本型 
属性内容5文本型 
' 全局i = i
' 调试输出 (全局i)
' 调试输出 (超级列表框_链接.取标题 (全局i - 1, 2))
json文件 = 文本_替换 (文本_取出中间文本 (原文件, “window.rawData=”, “”, , ), , , , “;”, “”, , , , , , , , )
' 置剪辑板文本 (json文件)
json.解析 (json文件, , )  ' 商量调用时候记得替换
商品id = json.取通用属性 (“store.initDataObj.goods.goodsID”, )
商品名称 = json.取通用属性 (“store.initDataObj.goods.goodsName”, )
商品状态 = “上架”
商品分类 = 寻找cat对应名称 (json.取通用属性 (“store.initDataObj.goods.catID”, ))
' 调试输出 (json.取通用属性 (“store.initDataObj.goods.catID”, ))
商品链接 = “https://mobile.pinduoduo.com/goods.html?goods_id=” + 商品id
商品视频 = json.取通用属性 (“store.initDataObj.goods.videoGallery[0].videoUrl”, )
详情张数 = json.取属性 (“store.initDataObj.goods.detailGallery”).成员数 ()
商品轮播图1 = json.取通用属性 (“store.initDataObj.goods.topGallery[0].url”, )
商品轮播图2 = json.取通用属性 (“store.initDataObj.goods.topGallery[1].url”, )
商品轮播图3 = json.取通用属性 (“store.initDataObj.goods.topGallery[2].url”, )
商品轮播图4 = json.取通用属性 (“store.initDataObj.goods.topGallery[3].url”, )
商品轮播图5 = json.取通用属性 (“store.initDataObj.goods.topGallery[4].url”, )
商品轮播图6 = json.取通用属性 (“store.initDataObj.goods.topGallery[5].url”, )
商品轮播图7 = json.取通用属性 (“store.initDataObj.goods.topGallery[6].url”, )
商品轮播图8 = json.取通用属性 (“store.initDataObj.goods.topGallery[7].url”, )
商品轮播图9 = json.取通用属性 (“store.initDataObj.goods.topGallery[8].url”, )
商品轮播图10 = json.取通用属性 (“store.initDataObj.goods.topGallery[9].url”, )
' 拼单价 = json.取通用属性 (“store.initDataObj.goods.minGroupPrice”)
' 单买价 = json.取通用属性 (“store.initDataObj.goods.maxNormalPrice”)
sku状态 = “上架”
sku编码 = “”
创建时间 = 文本_取出中间文本 (json.取通用属性 (“store.initDataObj.goods.viewImageData[0]”, ), “img/”, “/”, , )
如果真 (创建时间 = “”)
创建时间 = 文本_取出中间文本 (json.取通用属性 (“store.initDataObj.goods.viewImageData[0]”, ), “gw/”, “/”, , )
如果真 (json.取通用属性 (“store.initDataObj.goods.goodsProperty[0].key”, )“品牌”)
品牌 = “品牌:” + json.取通用属性 (“store.initDataObj.goods.goodsProperty[0].key”, )

计次循环首 (详情张数, 详情张数计次)
商品详情图 = 商品详情图 + json.取通用属性 (“store.initDataObj.goods.detailGallery[”到文本 (详情张数计次 - 1)“].url”, )“,”
处理事件 ()
计次循环尾 ()
' 调试输出 (商品详情图)
属性数量 = json.取属性 (“store.initDataObj.goods.goodsProperty”).成员数 ()
计次循环首 (属性数量, 属性计次)
属性标题 = json.取通用属性 (“store.initDataObj.goods.goodsProperty[”到文本 (属性计次 - 1)“].key”, )“:”
属性内容0 = json.取通用属性 (“store.initDataObj.goods.goodsProperty[”到文本 (属性计次 - 1)“].values”, )
属性内容0 = 文本_替换 (属性内容0, , , , “[”, “”, “]”, “”, #引号, “”, , , , )
' 属性内容1 = json.取通用属性 (“store.initDataObj.goods.goodsProperty[” + 到文本 (属性计次 - 1) + “].values[1]”)
' 属性内容2 = json.取通用属性 (“store.initDataObj.goods.goodsProperty[” + 到文本 (属性计次 - 1) + “].values[2]”)
' 属性内容3 = json.取通用属性 (“store.initDataObj.goods.goodsProperty[” + 到文本 (属性计次 - 1) + “].values[3]”)
' 属性内容4 = json.取通用属性 (“store.initDataObj.goods.goodsProperty[” + 到文本 (属性计次 - 1) + “].values[4]”)
' 属性内容5 = json.取通用属性 (“store.initDataObj.goods.goodsProperty[” + 到文本 (属性计次 - 1) + “].values[5]”)
商品属性 = 商品属性 + 属性标题 + 属性内容0 + “;”
. ' 如果真 (属性内容1 = “”)
' 商品属性 = 商品属性 + 属性标题 + 属性内容0 + “;”
. ' 如果真 (属性内容2 = “”)
' 商品属性 = 商品属性 + 属性标题 + 属性内容0 + “,” + 属性内容1 + “;”
. ' 如果真 (属性内容3 = “”)
' 商品属性 = 商品属性 + 属性标题 + 属性内容0 + “,” + 属性内容1 + “,” + 属性内容2 + “;”
. ' 如果真 (属性内容4 = “”)
' 商品属性 = 商品属性 + 属性标题 + 属性内容0 + “,” + 属性内容1 + “,” + 属性内容2 + “,” + 属性内容3 + “;”
. ' 如果真 (属性内容5 = “”)
' 商品属性 = 商品属性 + 属性标题 + 属性内容0 + “,” + 属性内容1 + “,” + 属性内容2 + “,” + 属性内容3 + “,” + 属性内容4 + “;”
. ' 如果真 (属性内容5 ≠ “”)
' 商品属性 = 商品属性 + 属性标题 + 属性内容0 + “,” + 属性内容1 + “,” + 属性内容2 + “,” + 属性内容3 + “,” + 属性内容4 + “,” + 属性内容5 + “;”
处理事件 ()
计次循环尾 ()
' 调试输出 (商品属性)
sku = json.取属性 (“store.initDataObj.goods.skus”).成员数 ()
调试输出 (sku)
计次循环首 (sku, sku计次)
sku库存1 = json.取通用属性 (“store.initDataObj.goods.skus[”到文本 (sku计次 - 1)“].quantity”, )
如果真 (sku库存1 ≠ “0”)
进入许可区 (线程许可1)
调试输出 (“进入许可区,开始设置超级列表框标题,线程ID:”到文本 (线程_取自线程ID ()))
索引 = 超级列表框1.插入表项 (, , , , , )
超级列表框1.置标题 (索引, 0, 商品id)  ' 商品id
超级列表框1.置标题 (索引, 1, 商品名称)  ' 商品名称
超级列表框1.置标题 (索引, 2, 商品状态)  ' 商品状态
超级列表框1.置标题 (索引, 3, 商品分类)  ' 商品分类
超级列表框1.置标题 (索引, 4, 商品链接)  ' 商品链接
超级列表框1.置标题 (索引, 5, json.取通用属性 (“store.initDataObj.goods.skus[”到文本 (sku计次 - 1)“].skuId”, ))  ' skuid
超级列表框1.置标题 (索引, 6, json.取通用属性 (“store.initDataObj.goods.skus[”到文本 (sku计次 - 1)“].specs[0]['spec_value']”, ) + json.取通用属性 (“store.initDataObj.goods.skus[”到文本 (sku计次 - 1)“].specs[1]['spec_value']”, ))  ' SKU属性
超级列表框1.置标题 (索引, 7, sku库存1)  ' sku库存
超级列表框1.置标题 (索引, 8, json.取通用属性 (“store.initDataObj.goods.skus[”到文本 (sku计次 - 1)“].groupPrice”, ))  ' 拼单价
超级列表框1.置标题 (索引, 9, json.取通用属性 (“store.initDataObj.goods.skus[”到文本 (sku计次 - 1)“].normalPrice”, ))  ' 单买价
超级列表框1.置标题 (索引, 10, sku状态)  ' sku状态
超级列表框1.置标题 (索引, 12, json.取通用属性 (“store.initDataObj.goods.skus[”到文本 (sku计次 - 1)“].thumbUrl”, ))  ' 规格预览图链接
超级列表框1.置标题 (索引, 13, json.取通用属性 (“store.initDataObj.goods.skus[”到文本 (sku计次 - 1)“].normalPrice”, ))  ' 商品参考价
超级列表框1.置标题 (索引, 15, 品牌)  ' 品牌
超级列表框1.置标题 (索引, 16, 商品属性)  ' 商品属性
超级列表框1.置标题 (索引, 17, json.取通用属性 (“store.initDataObj.goods.skus[”到文本 (sku计次 - 1)“].specs[0]['spec_value']”, ))  ' 颜色
超级列表框1.置标题 (索引, 18, json.取通用属性 (“store.initDataObj.goods.skus[”到文本 (sku计次 - 1)“].specs[1]['spec_value']”, ))  ' 尺码
超级列表框1.置标题 (索引, 19, 商品轮播图1)
超级列表框1.置标题 (索引, 20, 商品轮播图2)
超级列表框1.置标题 (索引, 21, 商品轮播图3)
超级列表框1.置标题 (索引, 22, 商品轮播图4)
超级列表框1.置标题 (索引, 23, 商品轮播图5)
超级列表框1.置标题 (索引, 24, 商品轮播图6)
超级列表框1.置标题 (索引, 25, 商品轮播图7)
超级列表框1.置标题 (索引, 26, 商品轮播图8)
超级列表框1.置标题 (索引, 27, 商品轮播图9)
超级列表框1.置标题 (索引, 28, 商品轮播图10)
超级列表框1.置标题 (索引, 29, 商品详情图)
超级列表框1.置标题 (索引, 30, 创建时间)
超级列表框1.置标题 (索引, 32, 商品视频)
超级列表框1.保证显示 (索引)
调试输出 (“退出许可区,完成设置超级列表框标题,线程ID:”到文本 (线程_取自线程ID ()))
退出许可区 (线程许可1)
' EmptyWorkingSet ()程序_整理内存

处理事件 ()
计次循环尾 ()
商品id = “”
商品名称 = “”
商品状态 = “”
商品分类 = “”
商品链接 = “”
sku状态 = “”
品牌 = “”
商品属性 = “”
商品轮播图1 = “”
商品轮播图2 = “”
商品轮播图3 = “”
商品轮播图4 = “”
商品轮播图5 = “”
商品轮播图6 = “”
商品轮播图7 = “”
商品轮播图8 = “”
商品轮播图9 = “”
商品轮播图10 = “”
商品详情图 = “”
创建时间 = “”
商品视频 = “”
json.清除 ()
' 多线程_线程数1 = 多线程_线程数1 - 1
判断开始断 (多线程_线程数1 = 0)  ' 因为只有线程数为0才会进入,所以不写到许可区里面了。
判断开始断 (多线程_状态1 = 1)
' 调试输出 (“执行完毕”)
' 按钮2.禁止 = 假
' 删除进入许可证 (线程许可1)
' 标签_线程状态.标题 = “执行完成”
. ' 判断 (多线程_状态1 = 2)
' 标签_线程状态.标题 = “已暂停”
. ' 判断 (多线程_状态1 = 0)
' 标签_线程状态.标题 = “已停止”
' 删除进入许可证 (线程许可1)






' 线程_启动 (&加入表格, , )
' 延迟 (3000)



i支持库列表   支持库注释   
spec特殊功能支持库
EThread多线程支持库
iext扩展界面支持库一

是内次你没有释放导致[color=rgba(0, 0, 0, 0.85)][backcolor=rgba(0, 0, 0, 0.04)]字节内存失败报错吗?类似于这种的,应该如何释放,是因为我置标题的数据太多了吗?


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:0% (0/1)

签到天数: 3 天

 楼主| 发表于 2024-12-4 11:22:58 | 显示全部楼层   江西省景德镇市
由于采集的数据老是因为这个分配内存失败,导致数据无法保存,哪位大神解决一下这个问题
回复

使用道具 举报

结帖率:95% (19/20)

签到天数: 19 天

发表于 2024-12-4 12:32:24 | 显示全部楼层   福建省宁德市
线程开多了就容易内存不够,假设一个json数据是1MB,十条线程就是10MB,加上解析占用、读属性、等乱七八糟的占用,数量多了内存不就不够了吗,一共可用的内存就1.95GB左右
回复

使用道具 举报

结帖率:83% (39/47)

签到天数: 20 天

发表于 2024-12-4 13:50:44 | 显示全部楼层   福建省宁德市
多线程?这一段代码看不出什么
回复

使用道具 举报

结帖率:0% (0/1)

签到天数: 3 天

 楼主| 发表于 2024-12-4 14:26:17 | 显示全部楼层   江西省景德镇市
大漠小鸟 发表于 2024-12-4 12:32
线程开多了就容易内存不够,假设一个json数据是1MB,十条线程就是10MB,加上解析占用、读属性、等乱七八糟 ...

我清空了json,和赋值的变量
回复

使用道具 举报

结帖率:0% (0/1)

签到天数: 3 天

 楼主| 发表于 2024-12-4 14:27:43 | 显示全部楼层   江西省景德镇市
凌哥 发表于 2024-12-4 13:50
多线程?这一段代码看不出什么

我找到原因了,原因和多线程没有关系,而是出错的原文本没有处理,导致后面出现内存溢出的情况
回复

使用道具 举报

结帖率:0% (0/1)

签到天数: 3 天

 楼主| 发表于 2024-12-4 14:34:25 | 显示全部楼层   江西省景德镇市
七宝AY 发表于 2024-12-4 14:27
我找到原因了,原因和多线程没有关系,而是出错的原文本没有处理,导致后面出现内存溢出的情况 ...

就是这个位置,之前没有处理,直接让他执行下去,因为解析文件肯定出错即使,能解析出来,后面的json取出来的值肯定也会出错,导致某个位置出现内存溢出,导致内存分配报错,我加了判断处理之后就解决了这个问题,一开始我也以为是因为,变量或者json,或者内存没有释放导致的,测试了好几次发现不是这个问题。谢谢大家
VX图片_20241204143401.png
回复

使用道具 举报

结帖率:83% (39/47)

签到天数: 20 天

发表于 2024-12-4 15:04:58 | 显示全部楼层   福建省宁德市
七宝AY 发表于 2024-12-4 14:34
就是这个位置,之前没有处理,直接让他执行下去,因为解析文件肯定出错即使,能解析出来,后面的json取出 ...

你这样写理论上速度快了后也会崩溃
回复

使用道具 举报

结帖率:0% (0/1)

签到天数: 3 天

 楼主| 发表于 2024-12-4 16:14:26 | 显示全部楼层   江西省景德镇市
凌哥 发表于 2024-12-4 15:04
你这样写理论上速度快了后也会崩溃

那应该如何解决呢,好像后面还是会出现这种情况

补充内容 (2024-12-4 16:15):
报错的原因是什么
回复

使用道具 举报

结帖率:100% (6/6)

签到天数: 3 天

发表于 2024-12-20 21:48:14 | 显示全部楼层   广西壮族自治区桂林市
占坑等学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表