Fix memory leak in getInstrumentationResult am: c8f00b5c96
am: 81e795ebb3
Change-Id: I77dfdd6e653018ba64a70f70aded8dca03dc9bbd
diff --git a/src/com/android/nn/benchmark/app/NNBenchmark.java b/src/com/android/nn/benchmark/app/NNBenchmark.java
index 273b4be..c29fef8 100644
--- a/src/com/android/nn/benchmark/app/NNBenchmark.java
+++ b/src/com/android/nn/benchmark/app/NNBenchmark.java
@@ -86,7 +86,7 @@
BenchmarkResult getInstrumentationResult(
TestModels.TestModelEntry t, float warmupTimeSeconds, float runTimeSeconds)
throws IOException {
- mTest = changeTest(t);
+ mTest = changeTest(mTest, t);
return getBenchmark(warmupTimeSeconds, runTimeSeconds);
}
@@ -181,13 +181,6 @@
} catch (InterruptedException e) {
}
- // If we just ran a test, we destroy it here to relieve some memory
- // pressure
-
- if (mTest != null) {
- mTest.destroy();
- }
-
TestModels.TestModelEntry testModel =
TestModels.modelsList().get(mTestList[ct]);
int testNumber = ct + 1;
@@ -201,7 +194,7 @@
});
// Select the next test
- mTest = changeTest(testModel);
+ mTest = changeTest(mTest, testModel);
// If the user selected the "long pause" option, wait
if (mTogglePause) {
@@ -253,7 +246,11 @@
private boolean mDoingBenchmark;
public Processor mProcessor;
- NNTestBase changeTest(TestModels.TestModelEntry t) {
+ NNTestBase changeTest(NNTestBase oldTestBase, TestModels.TestModelEntry t) {
+ if (oldTestBase != null) {
+ // Make sure we don't leak memory.
+ oldTestBase.destroy();
+ }
NNTestBase tb = t.createNNTestBase(mUseNNApi,
false /* enableIntermediateTensorsDump */);
tb.setupModel(this);