开发者社区> 问答> 正文

CSDKOSS不清理运行环境会怎样?

一旦运行最后的清理接口aos_http_io_deinitialize();,程序就会返回更高一层的控制台
后续的程序会有一些影响。
不调用这个接口,程序可以跑通,但是不知道会不会有什么问题。
释放空间的话 会释放掉申请的内个p内存块吧?如果不清理运行环境一直跑程序进行上传下载,会不会造成内存泄露?

展开
收起
九日王朝 2016-01-05 17:55:59 5781 0
2 条回答
写回答
取消 提交回答
  • 回 1楼无衣蒹葭的帖子
    是这样的,我是一个服务器要一直获取用户传来的资源进行处理再回送
    但是如果我在中途进行aos_http_io_deinitialize();
    程序就相当于返回到更高一级的线程,在那个线程里通过批处理去掉cmd如果异常 批处理会终止
    不进行aos_http_io_deinitialize();的话 会在当前子线程模块运行 能确保程序的正确运行

    -------------------------

    回 1楼无衣蒹葭的帖子
    我没有采取外调 exe方式
    而是直接把sdk代码加到我原有的代码里了

    -------------------------

    回 1楼无衣蒹葭的帖子
    只调用aos_pool_destroy(p);不调用aos_http_io_deinitialize();会有什么问题?
    或者有没有其他的办法 不让程序回到更高一级?

    -------------------------

    回 5楼无衣蒹葭的帖子
    嗯,确实是多线程,那样的话如果在主函数循环里进行清理会影响到其他线程的处理对吧?

    -------------------------

    回 5楼无衣蒹葭的帖子
    是不是只要运行一次aos_http_io_deinitialize last就可以全部清理

    我在主循环里设置一个空闲的期间 然后进行
    aos_http_io_initialize("oss_test", 0);
    aos_http_io_deinitialize();

    两句 这样行嘛?

    -------------------------

    回 5楼无衣蒹葭的帖子
    我试了一下,发现只要我加了aos_http_io_deinitialize();
    程序就错了= =!!!
    后面调系统命令只要异常就不会继续执行了
    不知道这是什么情况。。。

    -------------------------

    回 9楼无衣蒹葭的帖子
    这个问题蛮蛋疼的。。只要我用aos_http_io_initialize cmd就会回到主线程状态 出异常就直接错了 哪怕只是删一个不存在的文件夹。。都不会继续执行批处理了

    -------------------------

    回 9楼无衣蒹葭的帖子

    只调aos_pool_destroy(p) 不调aos_http_io_initialize 然后 定期重启整个程序 会不会有什么危害?

    从目前的状态来看 我确实不能调aos_http_io_initialize。。。除非我把整个osssdk单独做一个进程去调用

    -------------------------

    ReCSDKOSS不清理运行环境会怎样?
    确实每次上传下载内存都有少量的增长
    2016-01-06 09:19:36
    赞同 展开评论 打赏
  • 回 楼主九日王朝的帖子
    aos_http_io_deinitialize()中主要有curl_easy_cleanup,apr_file_close,aos_pool_destroy,pthread_mutex_destroy等。目的就是你说的释放内存,锁等资源。如果你不调用aos_http_io_deinitialize,但一直调用aos_http_io_initialize,没有释放的内存会一直累积,会导致内存泄露,内存越来越紧张。

    另外,aos_http_io_deinitialize只需要你在的程序结束的时候调用一次即可,这个函数调用后,理论上你的程序就整体退出了,为啥后面还会去上传下载?

    -------------------------

    回 4楼九日王朝的帖子
    你是必须用多线程?每个线程都要调用aos_http_io_deinitialize?

    如果不是,你可以试试在主线程启动后调用aos_http_io_deinitialize,主线程退出前调用aos_http_io_deinitialize。

    -------------------------

    回 8楼九日王朝的帖子
    主要是使用的curl_global_init(3)不是线程安全的。
    在循环内部空闲时间调用aos_http_io_**应该也没用的。你可以试试在create_thread之前调aos_http_io_initialize,,在join threads之后调aos_http_io_deinitialize看看。如果不行,那就只能放到每个线程里面去调了。

    -------------------------

    回 12楼九日王朝的帖子
    可以有这几种办法:
    1,可以这样,每个线程开始的时候调用一次aos_http_io_initialize,线程退出前执行一次aos_http_io_deinitialize
    2,根绝你的使用场景,看看是否可以把oss的操作放到一个线程里面去
    3,或者说一下你的具体使用场景,我们一起看看有没有更好的解决办法
    2016-01-05 20:45:49
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载