Enable StrictMode for closable objects in RsTest

Bug: 28053769

Removed most CloseGuard warnings by adding destroy() calls.
Other warnings are addressed in the runtime in other CLs.

Left out changes to UT_reduce and UT_reduce_backward since dgross is
addressing them in separate CLs.

Change-Id: Ie8ccfa205e3dedd8b1f121ff024d83edfaa9b46c
diff --git a/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_ref_count.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_ref_count.java
index fe32528..f11b9c8 100644
--- a/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_ref_count.java
+++ b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_ref_count.java
@@ -37,6 +37,7 @@
 
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_script.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_script.java
index 17385c9..6e13b2a 100644
--- a/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_script.java
+++ b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_script.java
@@ -53,6 +53,11 @@
 
         pRS.finish();
         waitForMessage();
+        s.destroy();
+        testAllocation1.getType().destroy();
+        testAllocation1.destroy();
+        testAllocation2.getType().destroy();
+        testAllocation2.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/RSTest.java b/tests/java_api/RsTest/src/com/android/rs/test/RSTest.java
index 2c2d6a2..9eb35ad 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/RSTest.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/RSTest.java
@@ -19,6 +19,11 @@
 import android.app.ListActivity;
 import android.os.Bundle;
 import android.renderscript.RenderScript;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.os.StrictMode;
+import android.provider.Settings.System;
 import android.util.Log;
 
 public class RSTest extends ListActivity {
@@ -33,6 +38,12 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
+
+        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
+                               .detectLeakedClosableObjects()
+                               .penaltyLog()
+                               .build());
+
         mRS = RenderScript.create(this);
 
         RSTC = new RSTestCore(this);
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_alloc.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_alloc.java
index 179d3c2..47157ed 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_alloc.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_alloc.java
@@ -23,6 +23,13 @@
 import android.renderscript.Type;
 
 public class UT_alloc extends UnitTest {
+    private Type T;
+    private Type mTFaces;
+    private Type mTLOD;
+    private Type mTFacesLOD;
+    private Allocation mAFaces;
+    private Allocation mALOD;
+    private Allocation mAFacesLOD;
 
     protected UT_alloc(RSTestCore rstc, Context ctx) {
         super(rstc, "Alloc", ctx);
@@ -37,20 +44,24 @@
         s.set_dimY(Y);
         s.set_dimZ(Z);
         typeBuilder.setX(X);  // Only build a 1-D version of this
-        Allocation A = Allocation.createTyped(RS, typeBuilder.create());
+        T = typeBuilder.create();
+        Allocation A = Allocation.createTyped(RS, T);
         s.bind_a(A);
         s.set_aRaw(A);
 
         typeBuilder = new Type.Builder(RS, Element.I32(RS));
         typeBuilder.setX(X).setY(Y).setFaces(true);
-        Allocation AFaces = Allocation.createTyped(RS, typeBuilder.create());
-        s.set_aFaces(AFaces);
+        mTFaces = typeBuilder.create();
+        mAFaces = Allocation.createTyped(RS, mTFaces);
+        s.set_aFaces(mAFaces);
         typeBuilder.setFaces(false).setMipmaps(true);
-        Allocation ALOD = Allocation.createTyped(RS, typeBuilder.create());
-        s.set_aLOD(ALOD);
+        mTLOD = typeBuilder.create();
+        mALOD = Allocation.createTyped(RS, mTLOD);
+        s.set_aLOD(mALOD);
         typeBuilder.setFaces(true).setMipmaps(true);
-        Allocation AFacesLOD = Allocation.createTyped(RS, typeBuilder.create());
-        s.set_aFacesLOD(AFacesLOD);
+        mTFacesLOD = typeBuilder.create();
+        mAFacesLOD = Allocation.createTyped(RS, mTFacesLOD);
+        s.set_aFacesLOD(mAFacesLOD);
 
         return;
     }
@@ -64,6 +75,15 @@
         s.invoke_alloc_test();
         pRS.finish();
         waitForMessage();
+        T.destroy();
+        s.get_a().destroy();
+        mAFaces.destroy();
+        mALOD.destroy();
+        mAFacesLOD.destroy();
+        mTFaces.destroy();
+        mTLOD.destroy();
+        mTFacesLOD.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_array_alloc.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_array_alloc.java
index b08abed..8d2d0e4 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_array_alloc.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_array_alloc.java
@@ -46,6 +46,11 @@
         s.invoke_array_alloc_test();
         pRS.finish();
         waitForMessage();
+        for (int i = 0; i < dimX; i++) {
+            Arr[i].destroy();
+        }
+        T.destroy();
+        s.destroy();
         pRS.destroy();
         passTest();
     }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_array_init.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_array_init.java
index 401019f..ab61765 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_array_init.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_array_init.java
@@ -86,6 +86,7 @@
         s.invoke_array_init_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
         passTest();
     }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_atomic.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_atomic.java
index fdde258..131781a 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_atomic.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_atomic.java
@@ -32,6 +32,7 @@
         s.invoke_atomic_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_bug_char.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_bug_char.java
index 9eb76eb..0158b80 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_bug_char.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_bug_char.java
@@ -83,6 +83,7 @@
         s.invoke_bug_char_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_check_dims.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_check_dims.java
index cd4b3be..7fbc28a 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_check_dims.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_check_dims.java
@@ -25,6 +25,7 @@
 public class UT_check_dims extends UnitTest {
     byte mFailedArr[];
     int mData[];
+    Allocation mAFailed;
     Allocation mA;
     static final int Pattern = 0xA5A5A5A5;
 
@@ -35,12 +36,12 @@
     private void initializeGlobals(RenderScript RS, ScriptC_check_dims s) {
         Type.Builder typeBuilder = new Type.Builder(RS, Element.U8(RS));
         typeBuilder.setX(1);
-        Allocation AFailed = Allocation.createTyped(RS, typeBuilder.create());
-        s.set_aFailed(AFailed);
+        mAFailed = Allocation.createTyped(RS, typeBuilder.create());
+        s.set_aFailed(mAFailed);
 
         mFailedArr = new byte[1];
         mFailedArr[0] = 0;
-        AFailed.copyFrom(mFailedArr);
+        mAFailed.copyFrom(mFailedArr);
 
         typeBuilder = new Type.Builder(RS, Element.I32(RS));
         int X = 5;
@@ -67,6 +68,9 @@
         s.invoke_check_dims_test();
         pRS.finish();
         waitForMessage();
+        mAFailed.destroy();
+        mA.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_clamp.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_clamp.java
index 5e5878e..489f54e 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_clamp.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_clamp.java
@@ -32,6 +32,7 @@
         s.invoke_clamp_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_clamp_relaxed.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_clamp_relaxed.java
index a53b2a5..2ef97b6 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_clamp_relaxed.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_clamp_relaxed.java
@@ -33,6 +33,7 @@
         s.invoke_clamp_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_convert.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_convert.java
index b241d27..6e2b0f1 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_convert.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_convert.java
@@ -32,6 +32,7 @@
         s.invoke_convert_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_convert_relaxed.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_convert_relaxed.java
index 4956c6f..2514271 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_convert_relaxed.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_convert_relaxed.java
@@ -33,6 +33,7 @@
         s.invoke_convert_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_copy_test.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_copy_test.java
index e7e6ff3..da760cf 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_copy_test.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_copy_test.java
@@ -113,6 +113,7 @@
 
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_ctxt_default.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_ctxt_default.java
index f6f9f80..fe6a526 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_ctxt_default.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_ctxt_default.java
@@ -23,6 +23,7 @@
 import android.renderscript.Type;
 
 public class UT_ctxt_default extends UnitTest {
+    private Type T;
     private Allocation A;
     private Allocation B;
 
@@ -36,9 +37,10 @@
         s.set_gDimX(X);
         typeBuilder.setX(X);
 
-        A = Allocation.createTyped(RS, typeBuilder.create());
+        T = typeBuilder.create();
+        A = Allocation.createTyped(RS, T);
         s.set_A(A);
-        B = Allocation.createTyped(RS, typeBuilder.create());
+        B = Allocation.createTyped(RS, T);
         s.set_B(B);
         return;
     }
@@ -54,6 +56,10 @@
         s.invoke_kernel_test();
         pRS.finish();
         waitForMessage();
+        T.destroy();
+        A.destroy();
+        B.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_element.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_element.java
index 7ed1965..03d62b4 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_element.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_element.java
@@ -86,6 +86,9 @@
         s.invoke_element_test();
         pRS.finish();
         waitForMessage();
+        s.get_complexStruct().getAllocation().destroy();
+        s.get_complexStruct().getElement().destroy();
+        s.destroy();
     }
 
     private void testJavaSide(RenderScript RS) {
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach.java
index 1afed53..82efdcd 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach.java
@@ -54,6 +54,9 @@
         s.invoke_foreach_test();
         pRS.finish();
         waitForMessage();
+        A.getType().destroy();
+        A.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_bounds.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_bounds.java
index 48e5cdd..6d1b77d 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_bounds.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_bounds.java
@@ -68,6 +68,9 @@
         s.invoke_foreach_bounds_test();
         pRS.finish();
         waitForMessage();
+        A.getType().destroy();
+        A.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_multi.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_multi.java
index cf9be09..b23cde6 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_multi.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_multi.java
@@ -104,6 +104,7 @@
 
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_fp16.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_fp16.java
index 96863a8..9dae23e 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_fp16.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_fp16.java
@@ -26,6 +26,7 @@
     private int dimX = 7;
     private int dimY = 5;
     private int dimZ = 3;
+    private Type type;
     private Allocation alloc;
 
     protected UT_fp16(RSTestCore rstc, Context ctx) {
@@ -45,7 +46,8 @@
                 typeBuilder.setX(dimX).setY(dimY).setZ(dimZ);
                 break;
         }
-        alloc = Allocation.createTyped(RS, typeBuilder.create());
+        type = typeBuilder.create();
+        alloc = Allocation.createTyped(RS, type);
 
         s.set_gDimX(dimX);
         s.set_gDimY(nDims > 1 ? dimY : 0);
@@ -60,10 +62,18 @@
         s.forEach_set_kernel_half(alloc);
         s.invoke_verify_half();
 
+        RS.finish();
+        alloc.destroy();
+        type.destroy();
+
         initializeGlobals(RS, s, Element.F16(RS), nDims);
         // rsSetElementAt in invoke and verify in kernel
         s.invoke_set_half();
         s.forEach_verify_kernel_half(alloc);
+
+        RS.finish();
+        alloc.destroy();
+        type.destroy();
     }
 
     private void TestHalf2(RenderScript RS, ScriptC_fp16 s, int nDims) {
@@ -73,10 +83,18 @@
         s.forEach_set_kernel_half2(alloc);
         s.invoke_verify_half2();
 
+        RS.finish();
+        alloc.destroy();
+        type.destroy();
+
         initializeGlobals(RS, s, Element.F16_2(RS), nDims);
         // rsSetElementAt in invoke and verify in kernel
         s.invoke_set_half2();
         s.forEach_verify_kernel_half2(alloc);
+
+        RS.finish();
+        alloc.destroy();
+        type.destroy();
     }
 
     private void TestHalf3(RenderScript RS, ScriptC_fp16 s, int nDims) {
@@ -86,10 +104,18 @@
         s.forEach_set_kernel_half3(alloc);
         s.invoke_verify_half3();
 
+        RS.finish();
+        alloc.destroy();
+        type.destroy();
+
         initializeGlobals(RS, s, Element.F16_3(RS), nDims);
         // rsSetElementAt in invoke and verify in kernel
         s.invoke_set_half3();
         s.forEach_verify_kernel_half3(alloc);
+
+        RS.finish();
+        alloc.destroy();
+        type.destroy();
     }
 
     private void TestHalf4(RenderScript RS, ScriptC_fp16 s, int nDims) {
@@ -99,10 +125,18 @@
         s.forEach_set_kernel_half4(alloc);
         s.invoke_verify_half4();
 
+        RS.finish();
+        alloc.destroy();
+        type.destroy();
+
         initializeGlobals(RS, s, Element.F16_4(RS), nDims);
         // rsSetElementAt in invoke and verify in kernel
         s.invoke_set_half4();
         s.forEach_verify_kernel_half4(alloc);
+
+        RS.finish();
+        alloc.destroy();
+        type.destroy();
     }
 
     public void run() {
@@ -121,6 +155,7 @@
         s.invoke_fp16_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_fp16_globals.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_fp16_globals.java
index 5a2fd5c..c08f2b3 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_fp16_globals.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_fp16_globals.java
@@ -54,6 +54,7 @@
 
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_fp_mad.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_fp_mad.java
index 88a1c83..f6c486c 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_fp_mad.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_fp_mad.java
@@ -32,6 +32,7 @@
         s.invoke_fp_mad_test(0, 0);
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_int4.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_int4.java
index e003cdb..103c111 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_int4.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_int4.java
@@ -32,6 +32,7 @@
         s.invoke_int4_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel.java
index b4196de..47ad14a 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel.java
@@ -23,6 +23,8 @@
 import android.renderscript.Type;
 
 public class UT_kernel extends UnitTest {
+    private Type TA;
+    private Type TB;
     private Allocation A;
     private Allocation B;
 
@@ -35,9 +37,11 @@
         int X = 5;
         s.set_dimX(X);
         typeBuilder.setX(X);
-        A = Allocation.createTyped(RS, typeBuilder.create());
+        TA = typeBuilder.create();
+        A = Allocation.createTyped(RS, TA);
         s.bind_ain(A);
-        B = Allocation.createTyped(RS, typeBuilder.create());
+        TB = typeBuilder.create();
+        B = Allocation.createTyped(RS, TB);
         s.bind_aout(B);
 
         return;
@@ -54,6 +58,11 @@
         s.invoke_kernel_test();
         pRS.finish();
         waitForMessage();
+        A.destroy();
+        B.destroy();
+        TA.destroy();
+        TB.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d.java
index 89e1424..e82c754 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d.java
@@ -23,6 +23,7 @@
 import android.renderscript.Type;
 
 public class UT_kernel2d extends UnitTest {
+    private Type T;
     private Allocation A;
     private Allocation B;
 
@@ -39,9 +40,10 @@
         s.set_gDimY(Y);
         typeBuilder.setY(Y);
 
-        A = Allocation.createTyped(RS, typeBuilder.create());
+        T = typeBuilder.create();
+        A = Allocation.createTyped(RS, T);
         s.set_A(A);
-        B = Allocation.createTyped(RS, typeBuilder.create());
+        B = Allocation.createTyped(RS, T);
         s.set_B(B);
         return;
     }
@@ -57,6 +59,10 @@
         s.invoke_kernel_test();
         pRS.finish();
         waitForMessage();
+        T.destroy();
+        A.destroy();
+        B.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d_oldstyle.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d_oldstyle.java
index 285d810..a1efc29 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d_oldstyle.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d_oldstyle.java
@@ -23,6 +23,7 @@
 import android.renderscript.Type;
 
 public class UT_kernel2d_oldstyle extends UnitTest {
+    private Type T;
     private Allocation A;
     private Allocation B;
 
@@ -39,9 +40,10 @@
         s.set_gDimY(Y);
         typeBuilder.setY(Y);
 
-        A = Allocation.createTyped(RS, typeBuilder.create());
+        T = typeBuilder.create();
+        A = Allocation.createTyped(RS, T);
         s.set_A(A);
-        B = Allocation.createTyped(RS, typeBuilder.create());
+        B = Allocation.createTyped(RS, T);
         s.set_B(B);
         return;
     }
@@ -57,6 +59,10 @@
         s.invoke_kernel_test();
         pRS.finish();
         waitForMessage();
+        T.destroy();
+        A.destroy();
+        B.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel3d.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel3d.java
index effd9f9..ab63526 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel3d.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel3d.java
@@ -23,6 +23,7 @@
 import android.renderscript.Type;
 
 public class UT_kernel3d extends UnitTest {
+    private Type T;
     private Allocation A;
     private Allocation B;
 
@@ -42,9 +43,10 @@
         s.set_gDimZ(Z);
         typeBuilder.setZ(Z);
 
-        A = Allocation.createTyped(RS, typeBuilder.create());
+        T = typeBuilder.create();
+        A = Allocation.createTyped(RS, T);
         s.set_A(A);
-        B = Allocation.createTyped(RS, typeBuilder.create());
+        B = Allocation.createTyped(RS, T);
         s.set_B(B);
         return;
     }
@@ -60,6 +62,10 @@
         s.invoke_kernel_test();
         pRS.finish();
         waitForMessage();
+        T.destroy();
+        A.destroy();
+        B.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel_struct.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel_struct.java
index 7fcec26..4573678 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel_struct.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel_struct.java
@@ -53,6 +53,11 @@
         s.invoke_kernel_struct_test();
         pRS.finish();
         waitForMessage();
+        A.destroy();
+        B.destroy();
+        s.get_ain().getElement().destroy();
+        s.get_aout().getElement().destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_math.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_math.java
index 7d89e3e..9ece867 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_math.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_math.java
@@ -32,6 +32,7 @@
         s.invoke_math_test(0, 0);
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_math_agree.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_math_agree.java
index d5089ea..1e06d17 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_math_agree.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_math_agree.java
@@ -576,6 +576,7 @@
         s.invoke_math_agree_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_math_conformance.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_math_conformance.java
index a94069c..cbf4521 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_math_conformance.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_math_conformance.java
@@ -33,6 +33,7 @@
         s.invoke_math_conformance_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
         passTest();
     }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_math_fp16.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_math_fp16.java
index f76f994..f589a71 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_math_fp16.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_math_fp16.java
@@ -37,6 +37,7 @@
 
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_min.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_min.java
index ef008c7..951c46a 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_min.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_min.java
@@ -32,6 +32,7 @@
         s.invoke_min_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_noroot.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_noroot.java
index 744684d..9846109 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_noroot.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_noroot.java
@@ -52,6 +52,9 @@
         s.invoke_noroot_test();
         pRS.finish();
         waitForMessage();
+        A.getType().destroy();
+        A.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_primitives.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_primitives.java
index 71f3782..eb69c3a 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_primitives.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_primitives.java
@@ -95,6 +95,7 @@
             pRS.finish();
             waitForMessage();
         }
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_reduce.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_reduce.java
index 3e1e286..02ca8ab 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_reduce.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_reduce.java
@@ -848,6 +848,7 @@
         inputAllocation.destroy();
         outputAllocation.destroy();
 
+        scriptHsg.destroy();
         return outputArray;
     }
 
@@ -1487,6 +1488,7 @@
         // pass &= runPerformanceQuick(pRS, s);
 
         pRS.finish();
+        s.destroy();
         pRS.destroy();
 
         Log.i(TAG, pass ? "PASSED" : "FAILED");
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_refcount.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_refcount.java
index 432a8fb..8c19a1d 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_refcount.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_refcount.java
@@ -23,6 +23,8 @@
 import android.renderscript.Type;
 
 public class UT_refcount extends UnitTest {
+    private Type mT;
+    private Allocation mA;
 
     protected UT_refcount(RSTestCore rstc, Context ctx) {
         super(rstc, "Refcount", ctx);
@@ -33,8 +35,9 @@
         int X = 500;
         int Y = 700;
         typeBuilder.setX(X).setY(Y);
-        Allocation A = Allocation.createTyped(RS, typeBuilder.create());
-        s.set_globalA(A);
+        mT = typeBuilder.create();
+        mA = Allocation.createTyped(RS, mT);
+        s.set_globalA(mA);
     }
 
     public void run() {
@@ -45,6 +48,9 @@
         s.invoke_refcount_test();
         pRS.finish();
         waitForMessage();
+        mA.destroy();
+        mT.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_rsdebug.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_rsdebug.java
index 639dc97..86b0577 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_rsdebug.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_rsdebug.java
@@ -32,6 +32,7 @@
         s.invoke_test_rsdebug(0, 0);
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_rstime.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_rstime.java
index 23d2a65..6c5e711 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_rstime.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_rstime.java
@@ -33,6 +33,7 @@
         s.invoke_test_rstime(0, 0);
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_rstypes.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_rstypes.java
index 39b11be..c0b56aa 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_rstypes.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_rstypes.java
@@ -32,6 +32,7 @@
         s.invoke_test_rstypes(0, 0);
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_sampler.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_sampler.java
index 5361677..bba3bc4 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_sampler.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_sampler.java
@@ -76,6 +76,7 @@
         s.invoke_sampler_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
     }
 
     private void testJavaSide(RenderScript RS) {
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_float.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_float.java
index 7f34822..20f3be3 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_float.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_float.java
@@ -53,22 +53,22 @@
         final float floatVal = 3.14f;
         final double doubleVal = 1.23456789;
         final long longVal = 0x100000000L;
+        final Type T = Type.createX(pRS, Element.F64(pRS), ARRAY_SIZE);
         ScriptGroup.Closure c0 =
                 builder.addKernel(s_float.getKernelID_foo(),
-                        Type.createX(pRS, Element.F64(pRS), ARRAY_SIZE),
-                        unbound,
-                        new ScriptGroup.Binding(s_float.getFieldID_floatVal(),
-                                floatVal),
-                        new ScriptGroup.Binding(s_float.getFieldID_val(),
-                                doubleVal));
+                                  T,
+                                  unbound,
+                                  new ScriptGroup.Binding(s_float.getFieldID_floatVal(),
+                                                          floatVal),
+                                  new ScriptGroup.Binding(s_float.getFieldID_val(),
+                                                          doubleVal));
 
         ScriptGroup.Closure c1 =
                 builder.addKernel(s_float.getKernelID_goo(),
-                        Type.createX(pRS, Element.F64(pRS), ARRAY_SIZE),
-                        c0.getReturn(),
-                        new ScriptGroup.Binding(s_float.getFieldID_valLong(),
-                                longVal));
-
+                                  T,
+                                  c0.getReturn(),
+                                  new ScriptGroup.Binding(s_float.getFieldID_valLong(),
+                                                          longVal));
 
         ScriptGroup group = builder.create("TestFloatAnd64bit", c1.getReturn());
 
@@ -76,6 +76,10 @@
         ((Allocation) group.execute(input)[0]).copyTo(a);
 
         pRS.finish();
+        T.destroy();
+        group.destroy();
+        input.destroy();
+        s_float.destroy();
         pRS.destroy();
 
         boolean failed = false;
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_gatherscatter.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_gatherscatter.java
index 17c41bd..c99c81a 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_gatherscatter.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_gatherscatter.java
@@ -99,6 +99,10 @@
         ((Allocation) group.execute(input)[0]).copyTo(a);
 
         pRS.finish();
+
+        group.destroy();
+        input.destroy();
+        s.destroy();
         pRS.destroy();
 
         boolean failed = false;
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_nochain.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_nochain.java
index 01906eb..59f23c4 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_nochain.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_nochain.java
@@ -51,21 +51,23 @@
 
         ScriptGroup.Input unbound = builder.addInput();
 
+        Type T = Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE);
+
         ScriptGroup.Closure c0 =
                 builder.addKernel(s_inc.getKernelID_increment(),
-                        Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE),
-                        unbound);
+                                  T,
+                                  unbound);
 
         ScriptGroup.Closure c1 =
                 builder.addKernel(s_inc2.getKernelID_increment2(),
-                        Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE),
-                        unbound,
-                        new ScriptGroup.Binding(s_inc2.getFieldID_a(), unbound));
+                                  T,
+                                  unbound,
+                                  new ScriptGroup.Binding(s_inc2.getFieldID_a(), unbound));
 
         ScriptGroup.Closure c2 =
                 builder.addKernel(s_double.getKernelID_doubleKernel(),
-                        Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE),
-                        unbound);
+                                  T,
+                                  unbound);
 
         ScriptGroup group = builder.create("AddDouble2", c2.getReturn());
 
@@ -73,6 +75,12 @@
         ((Allocation) group.execute(input)[0]).copyTo(a);
 
         pRS.finish();
+        group.destroy();
+        T.destroy();
+        input.destroy();
+        s_inc.destroy();
+        s_inc2.destroy();
+        s_double.destroy();
         pRS.destroy();
 
         boolean failed = false;
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_pointwise.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_pointwise.java
index 29d584c..dd029f1 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_pointwise.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_pointwise.java
@@ -50,15 +50,17 @@
 
         ScriptGroup.Input unbound = builder.addInput();
 
+        Type T = Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE);
+
         ScriptGroup.Closure c0 =
                 builder.addKernel(s_inc.getKernelID_increment(),
-                        Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE),
-                        unbound);
+                                  T,
+                                  unbound);
 
         ScriptGroup.Closure c1 =
                 builder.addKernel(s_double.getKernelID_doubleKernel(),
-                        Type.createX(pRS, Element.I32_4(pRS), ARRAY_SIZE),
-                        c0.getReturn());
+                                  T,
+                                  c0.getReturn());
 
         ScriptGroup group = builder.create("AddDouble", c1.getReturn());
 
@@ -66,6 +68,11 @@
         ((Allocation) group.execute(input)[0]).copyTo(a);
 
         pRS.finish();
+        group.destroy();
+        T.destroy();
+        input.destroy();
+        s_double.destroy();
+        s_inc.destroy();
         pRS.destroy();
 
         boolean failed = false;
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_alloc.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_alloc.java
index 67a1e33..514b0c1 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_alloc.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_alloc.java
@@ -65,6 +65,7 @@
         s.invoke_single_source_alloc_test();
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_ref_count.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_ref_count.java
index c4138cc..a70c9de 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_ref_count.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_ref_count.java
@@ -34,6 +34,7 @@
 
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_script.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_script.java
index 176fca9..6adf6f3 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_script.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_script.java
@@ -53,6 +53,7 @@
 
         pRS.finish();
         waitForMessage();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_static_globals.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_static_globals.java
index 2ff0485..6138395 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_static_globals.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_static_globals.java
@@ -33,11 +33,15 @@
         ScriptC_static_globals s = new ScriptC_static_globals(pRS);
         pRS.setMessageHandler(mRsMessage);
         Type.Builder typeBuilder = new Type.Builder(pRS, Element.I32(pRS));
-        Allocation A = Allocation.createTyped(pRS, typeBuilder.setX(1).create());
+        Type t = typeBuilder.setX(1).create();
+        Allocation A = Allocation.createTyped(pRS, t);
         s.forEach_root(A);
         s.invoke_static_globals_test();
         pRS.finish();
         waitForMessage();
+        A.destroy();
+        t.destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_struct.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_struct.java
index b721e23..242929b 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_struct.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_struct.java
@@ -47,6 +47,9 @@
         s.invoke_struct_test(val);
         pRS.finish();
         waitForMessage();
+        p.getAllocation().destroy();
+        p.getElement().destroy();
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_unsigned.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_unsigned.java
index 5e9f0f0..0fe6037 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_unsigned.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_unsigned.java
@@ -52,6 +52,7 @@
             pRS.finish();
             waitForMessage();
         }
+        s.destroy();
         pRS.destroy();
     }
 }
diff --git a/tests/java_api/RsTest/src/com/android/rs/test/UT_vector.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_vector.java
index cb3fdc3..4ed3097 100644
--- a/tests/java_api/RsTest/src/com/android/rs/test/UT_vector.java
+++ b/tests/java_api/RsTest/src/com/android/rs/test/UT_vector.java
@@ -328,6 +328,7 @@
             pRS.finish();
             waitForMessage();
         }
+        s.destroy();
         pRS.destroy();
     }
 }