aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/java/org/apache/spark/memory/TaskMemoryManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/apache/spark/memory/TaskMemoryManager.java')
-rw-r--r--core/src/main/java/org/apache/spark/memory/TaskMemoryManager.java13
1 files changed, 7 insertions, 6 deletions
diff --git a/core/src/main/java/org/apache/spark/memory/TaskMemoryManager.java b/core/src/main/java/org/apache/spark/memory/TaskMemoryManager.java
index 2796114fc5..89521c1d6c 100644
--- a/core/src/main/java/org/apache/spark/memory/TaskMemoryManager.java
+++ b/core/src/main/java/org/apache/spark/memory/TaskMemoryManager.java
@@ -379,7 +379,6 @@ public class TaskMemoryManager {
*/
public long cleanUpAllAllocatedMemory() {
synchronized (this) {
- Arrays.fill(pageTable, null);
for (MemoryConsumer c: consumers) {
if (c != null && c.getUsed() > 0) {
// In case of failed task, it's normal to see leaked memory
@@ -387,14 +386,16 @@ public class TaskMemoryManager {
}
}
consumers.clear();
- }
- for (MemoryBlock page : pageTable) {
- if (page != null) {
- memoryManager.tungstenMemoryAllocator().free(page);
+ for (MemoryBlock page : pageTable) {
+ if (page != null) {
+ logger.warn("leak a page: " + page + " in task " + taskAttemptId);
+ memoryManager.tungstenMemoryAllocator().free(page);
+ }
}
+ Arrays.fill(pageTable, null);
}
- Arrays.fill(pageTable, null);
+
// release the memory that is not used by any consumer.
memoryManager.releaseExecutionMemory(acquiredButNotUsed, taskAttemptId, tungstenMemoryMode);