diff --git a/CHANGELOG.md b/CHANGELOG.md
index a83a96f93f421198d40d5cf5bb756536d72f2160..fd0b443aac46547ece403dbd5630b8fbaa684150 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,9 +2,10 @@
## 1.2.0
-* Kernels of the same class are now eligible to be run on different devices
+* Kernels of the same class are now eligible to be run on different devices.
* Added method to set execution mode without any fallback.
-* Added opencl device method for name
+* Added opencl device method for name.
+* Fixed a memory leak.
## 1.1.2
@@ -17,4 +18,4 @@
## 1.1.0
-* Changed group id and package to com.aparapi
\ No newline at end of file
+* Changed group id and package to com.aparapi
diff --git a/src/main/java/com/aparapi/internal/kernel/KernelManager.java b/src/main/java/com/aparapi/internal/kernel/KernelManager.java
index fb1d9aadf1b797fcae41564edd725d73612bbaac..3ae9d30760c0bcd66dd7102bebefa19c149e4826 100644
--- a/src/main/java/com/aparapi/internal/kernel/KernelManager.java
+++ b/src/main/java/com/aparapi/internal/kernel/KernelManager.java
@@ -15,12 +15,20 @@
*/
package com.aparapi.internal.kernel;
-import com.aparapi.*;
-import com.aparapi.device.*;
-import com.aparapi.internal.util.*;
-
-import java.lang.reflect.*;
-import java.util.*;
+import java.lang.reflect.Constructor;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+
+import com.aparapi.Config;
+import com.aparapi.Kernel;
+import com.aparapi.device.Device;
+import com.aparapi.device.JavaDevice;
+import com.aparapi.device.OpenCLDevice;
+import com.aparapi.internal.util.Reflection;
/**
* Created by Barney on 24/08/2015.
@@ -90,7 +98,7 @@ public class KernelManager {
builder.append("\n\n");
for (PreferencesWrapper wrapper : preferences.values()) {
KernelPreferences preferences = wrapper.getPreferences();
- Class<? extends Kernel> klass = wrapper.getKernel().getClass();
+ Class<? extends Kernel> klass = wrapper.getKernelClass();
KernelProfile profile = withProfilingInfo ? profiles.get(klass) : null;
builder.append(klass.getName()).append(":\n\tusing ").append(preferences.getPreferredDevice(null).getShortDescription());
List<Device> failedDevices = preferences.getFailedDevices();
@@ -144,7 +152,7 @@ public class KernelManager {
KernelPreferences kernelPreferences;
if (wrapper == null) {
kernelPreferences = new KernelPreferences(this, kernel.getClass());
- preferences.put(kernel.hashCode(), new PreferencesWrapper(kernel, kernelPreferences));
+ preferences.put(kernel.hashCode(), new PreferencesWrapper(kernel.getClass(), kernelPreferences));
}else{
kernelPreferences = preferences.get(kernel.hashCode()).getPreferences();
}
diff --git a/src/main/java/com/aparapi/internal/kernel/PreferencesWrapper.java b/src/main/java/com/aparapi/internal/kernel/PreferencesWrapper.java
index f5ee10916e9de4b117240d539c9b20d461172fa7..ba8bb0d4ebd2c73f6890adee7344c1617c844c99 100644
--- a/src/main/java/com/aparapi/internal/kernel/PreferencesWrapper.java
+++ b/src/main/java/com/aparapi/internal/kernel/PreferencesWrapper.java
@@ -18,18 +18,18 @@ package com.aparapi.internal.kernel;
import com.aparapi.Kernel;
public class PreferencesWrapper {
-
- private Kernel kernel;
+
+ private Class<? extends Kernel> klass;
private KernelPreferences preferences;
-
- public PreferencesWrapper(Kernel kernel, KernelPreferences preferences) {
+
+ public PreferencesWrapper(Class<? extends Kernel> klass, KernelPreferences preferences) {
super();
- this.kernel = kernel;
+ this.klass = klass;
this.preferences = preferences;
}
- public Kernel getKernel() {
- return kernel;
+ public Class<? extends Kernel> getKernelClass() {
+ return klass;
}
public KernelPreferences getPreferences() {