From 154fd79a0c55c35bdb8cf2e4753affd4aea8c46d Mon Sep 17 00:00:00 2001 From: Florian Roesler <florian.roesler@wooga.net> Date: Mon, 28 Nov 2016 12:05:36 +0100 Subject: [PATCH] fixed memory leak --- CHANGELOG.md | 7 +++--- .../internal/kernel/KernelManager.java | 24 ++++++++++++------- .../internal/kernel/PreferencesWrapper.java | 14 +++++------ 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a83a96f9..fd0b443a 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 fb1d9aad..3ae9d307 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 f5ee1091..ba8bb0d4 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() { -- GitLab