Browse Source

!8301 [MS][LITE]Fix Memory Leak

From: @gongdaguo
Reviewed-by: @hangangqiang,@zhanghaibo5
Signed-off-by:
tags/v1.1.0
mindspore-ci-bot Gitee 5 years ago
parent
commit
962772d2cc
6 changed files with 55 additions and 25 deletions
  1. +17
    -7
      model_zoo/official/lite/Himindspore/app/src/main/cpp/MSNetWork.cpp
  2. +2
    -1
      model_zoo/official/lite/Himindspore/app/src/main/cpp/MSNetWork.h
  3. +16
    -7
      model_zoo/official/lite/image_classification/app/src/main/cpp/MSNetWork.cpp
  4. +2
    -1
      model_zoo/official/lite/image_classification/app/src/main/cpp/MSNetWork.h
  5. +16
    -8
      model_zoo/official/lite/object_detection/app/src/main/cpp/MSNetWork.cpp
  6. +2
    -1
      model_zoo/official/lite/object_detection/app/src/main/cpp/MSNetWork.h

+ 17
- 7
model_zoo/official/lite/Himindspore/app/src/main/cpp/MSNetWork.cpp View File

@@ -18,10 +18,11 @@
#include <android/log.h>
#include <iostream>
#include <string>
#include "include/errorcode.h"

#define MS_PRINT(format, ...) __android_log_print(ANDROID_LOG_INFO, "MSJNI", format, ##__VA_ARGS__)

MSNetWork::MSNetWork(void) : session_(nullptr) {}
MSNetWork::MSNetWork(void) : session_(nullptr), model_(nullptr) {}

MSNetWork::~MSNetWork(void) {}

@@ -33,20 +34,29 @@ void MSNetWork::CreateSessionMS(char *modelBuffer, size_t bufferLen, mindspore::
}

// Compile model.
auto model = mindspore::lite::Model::Import(modelBuffer, bufferLen);
if (model == nullptr) {
model_ = mindspore::lite::Model::Import(modelBuffer, bufferLen);
if (model_ == nullptr) {
ReleaseNets();
MS_PRINT("Import model failed.");
return;
}

int ret = session_->CompileGraph(model);
int ret = session_->CompileGraph(model_);
if (ret != mindspore::lite::RET_OK) {
ReleaseNets();
MS_PRINT("CompileGraph failed.");
return;
}
}

int MSNetWork::ReleaseNets(void) {
delete session_;
return 0;
void MSNetWork::ReleaseNets(void) {
if (model_ != nullptr) {
model_->Free();
delete model_;
model_ = nullptr;
}
if (session_ != nullptr) {
delete session_;
session_ = nullptr;
}
}

+ 2
- 1
model_zoo/official/lite/Himindspore/app/src/main/cpp/MSNetWork.h View File

@@ -50,10 +50,11 @@ class MSNetWork {

void CreateSessionMS(char *modelBuffer, size_t bufferLen, mindspore::lite::Context *ctx);

int ReleaseNets(void);
void ReleaseNets(void);

mindspore::session::LiteSession *session() const { return session_; }
private:
mindspore::session::LiteSession *session_;
mindspore::lite::Model *model_;
};
#endif

+ 16
- 7
model_zoo/official/lite/image_classification/app/src/main/cpp/MSNetWork.cpp View File

@@ -22,7 +22,7 @@

#define MS_PRINT(format, ...) __android_log_print(ANDROID_LOG_INFO, "MSJNI", format, ##__VA_ARGS__)

MSNetWork::MSNetWork(void) : session_(nullptr) {}
MSNetWork::MSNetWork(void) : session_(nullptr), model_(nullptr) {}

MSNetWork::~MSNetWork(void) {}

@@ -34,20 +34,29 @@ void MSNetWork::CreateSessionMS(char *modelBuffer, size_t bufferLen, mindspore::
}

// Compile model.
auto model = mindspore::lite::Model::Import(modelBuffer, bufferLen);
if (model == nullptr) {
model_ = mindspore::lite::Model::Import(modelBuffer, bufferLen);
if (model_ == nullptr) {
ReleaseNets();
MS_PRINT("Import model failed.");
return;
}

int ret = session_->CompileGraph(model);
int ret = session_->CompileGraph(model_);
if (ret != mindspore::lite::RET_OK) {
ReleaseNets();
MS_PRINT("CompileGraph failed.");
return;
}
}

int MSNetWork::ReleaseNets(void) {
delete session_;
return 0;
void MSNetWork::ReleaseNets(void) {
if (model_ != nullptr) {
model_->Free();
delete model_;
model_ = nullptr;
}
if (session_ != nullptr) {
delete session_;
session_ = nullptr;
}
}

+ 2
- 1
model_zoo/official/lite/image_classification/app/src/main/cpp/MSNetWork.h View File

@@ -50,10 +50,11 @@ class MSNetWork {

void CreateSessionMS(char *modelBuffer, size_t bufferLen, mindspore::lite::Context *ctx);

int ReleaseNets(void);
void ReleaseNets(void);

mindspore::session::LiteSession *session() const { return session_; }
private:
mindspore::session::LiteSession *session_;
mindspore::lite::Model *model_;
};
#endif

+ 16
- 8
model_zoo/official/lite/object_detection/app/src/main/cpp/MSNetWork.cpp View File

@@ -22,7 +22,7 @@

#define MS_PRINT(format, ...) __android_log_print(ANDROID_LOG_INFO, "MSJNI", format, ##__VA_ARGS__)

MSNetWork::MSNetWork(void) : session_(nullptr) {}
MSNetWork::MSNetWork(void) : session_(nullptr), model_(nullptr) {}

MSNetWork::~MSNetWork(void) {}

@@ -34,21 +34,29 @@ void MSNetWork::CreateSessionMS(char *modelBuffer, size_t bufferLen, mindspore::
}

// Compile model.
auto model = mindspore::lite::Model::Import(modelBuffer, bufferLen);
if (model == nullptr) {
model_ = mindspore::lite::Model::Import(modelBuffer, bufferLen);
if (model_ == nullptr) {
ReleaseNets();
MS_PRINT("Import model failed.");
return;
}

int ret = session_->CompileGraph(model);
int ret = session_->CompileGraph(model_);
if (ret != mindspore::lite::RET_OK) {
ReleaseNets();
MS_PRINT("CompileGraph failed.");
return;
}
}

int MSNetWork::ReleaseNets(void) {
delete session_;
return 0;
void MSNetWork::ReleaseNets(void) {
if (model_ != nullptr) {
model_->Free();
delete model_;
model_ = nullptr;
}
if (session_ != nullptr) {
delete session_;
session_ = nullptr;
}
}


+ 2
- 1
model_zoo/official/lite/object_detection/app/src/main/cpp/MSNetWork.h View File

@@ -50,10 +50,11 @@ class MSNetWork {

void CreateSessionMS(char *modelBuffer, size_t bufferLen, mindspore::lite::Context *ctx);

int ReleaseNets(void);
void ReleaseNets(void);

mindspore::session::LiteSession *session() const { return session_; }
private:
mindspore::session::LiteSession *session_;
mindspore::lite::Model *model_;
};
#endif

Loading…
Cancel
Save