QuickJS 是使用引用计数法来判断对象是否可以被释放,引用计数法非常简单,通过给对象分配一个计时器来保存该对象被引用的次数,如果该对象被其它对象引用就会加1,如果删除引用就会减1,当引用的计数器为0时,那么就会被回收。
JSRuntime 是 QuickJS 最底层的执行环境,不使用的时需要及时释放。
一个 JSRuntime 可以创建多个 Context,每个 Context 之间是相互隔离的,不使用的时需要及时释放。
如果我们需要自己创建和关联JS对象时,我们需要处理好引用问题,必须通过 c 创建一个JSValue对象,那么我们就需要手动释放它,否则就会导致内存泄漏,同时我们也不能多次释放,这也会导致野指针,从而导致程序崩溃,如果我们只是纯粹运行js脚本就无需我们关心这个问题,引擎已经处理好了。
通过上面示例,我们得知引用计数法是通过JS_DupValue记芹枣腔录引用+1,JS_FreeValue引用减1实现计数,接下来就通过源码分析如何实现。
引用计数器头是一个结构体,目前只有一个int值,用于记录对象的引用次数。
引用计数器+1
JS_FreeValue 处理引用计数器-1,如果引用属于小于0时候就会执行垃圾回收,这里引入引用计岩桥数器最大的问题,如果a引用b,b也引用了a,这样的相互应用是不是就会导致a和b都无法回收?
JS_RunGC 函数就是用来解决相互引用问题,会在特定的时机触发。
经过上面两个函数,tmp_obj_list 就只会剩下环形引用的对象,gc_free_cycles() 回收 tmp_obj_list 列表的对象,并且对属性的引用-1。
开发环境为Visual Studio 2012,数据库为SQL SERVER2012R2,使用.net 4.5开发。
一、源码介绍
所有行业的ERP系统/进销存/仓库系统,该系统为vs2012 .net+MsSQL版,目前标准版功能简单、明了、满足公司正常谨携使用,已有多家企业正常使用,成熟稳定,有需要的可以下载看看。
二、主要功能
1、电商管理(可以和公众号、小程序对接) 微信订单、小程序订单、公众号订单
参数设置:轮播图片设置、分类导航设置、小程序参数设置、公众号参数设置
2、销售管理:销售订单、销售出库
3、采购管理:采购订单、采购入库
4、生产管理:BOM分组、BOM清单、生产计划、生产领料、生产入库
5、仓库管理:其他入库、其他出库、商品组装、商品拆卸、库存盘点、库存调拨
6、财务管理:销售收款、其他收款、采购付款、其他付款、收款核销、付款核销
7、采购报表
采购订单跟踪表 采购明细表 采购汇总表(按商品) 采购汇总表(按供应商)
8、销售报表
销售订单跟踪表 销售明细表凳宽 销售汇总表(按商品) 销售汇总表(按客户)
9、生产报表
生产计划跟踪表 生产领料明细表 生产领料汇总表 生产入库明细表 生产入库汇总表
10、仓存报表
商品库存余额表 商品收发明细表 商品收发汇总表
11、资金报表
现金银行报表 应付账款明细表 应收账款明细表
客户对账单 供应商对账单 其他收支明细
12、基础资料
供应商管理 商品管理 仓库管祥粗伏理 账户管理 员工管理 企业号通讯录
工序管理 辅助资料 客户类别 供应商类别 商品类别 商品品牌
收支类别 计量单位 结算方式 工序类别 高级设置 *** 作日志
参数设置 打印设置 Logo印章
3、默认数据库连接字符串在web.config配置文件中修改
获取源码方式:点赞+转发+关注+私信【进销存ERP】
******************************************************************************
欢迎点赞+转发+关注!大家的支持是我分享最大的动力!!!
******************************************************************************
废品回收小程序APP开发的主要功能:
1、上门预约
用户通过小程序可以直接预约废品上门宽燃信回收服务,并确定好时间,接下来就可以耐心等待回收人员接单和上门。
2、废品分类
用户可以根据自己的废品类型,在废品回收软件上对自己的废品进行慎轮分类选择,然后再选择相应的服务。
3、网上支付
废品回收小程序的工作人员,可以在小程序上直接把废品回收的钱直接付到用户的账户余额,段岁用户可以随时通过小程序提现。
4、废品回收价格
用户可以在废品回收小程序上看到自己的废品回收价格,让每个用户都能清楚废品的价格,增加对平台的好感度和信任感。
5、定位导航
回收人员的端口,还为回收人员提供了定位导航,并规划路线,让回收人员能够尽快到达与用户约定的地址,提高回收效率。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)