forked from mindspore-Ecosystem/mindspore
fix mem leak
This commit is contained in:
parent
64d078da79
commit
db89503c89
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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…
Reference in New Issue