From a16d1971da626d2bc10b63fd2afd36fdec1a3955 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 21 Sep 2014 10:06:01 +1000 Subject: [PATCH] Fix Some Memory Leaks diff --git a/src/main/java/net/minecraft/server/EnchantmentManager.java b/src/main/java/net/minecraft/server/EnchantmentManager.java index 9865681..32f5a3e 100644 --- a/src/main/java/net/minecraft/server/EnchantmentManager.java +++ b/src/main/java/net/minecraft/server/EnchantmentManager.java @@ -168,7 +168,10 @@ public class EnchantmentManager { if (entity instanceof EntityHuman) { a((EnchantmentManager.EnchantmentModifier) EnchantmentManager.d, entityliving.bA()); } - + // Spigot start + d.b = null; + d.a = null; + // Spigot end } public static void b(EntityLiving entityliving, Entity entity) { @@ -181,7 +184,10 @@ public class EnchantmentManager { if (entityliving instanceof EntityHuman) { a((EnchantmentManager.EnchantmentModifier) EnchantmentManager.e, entityliving.bA()); } - + // Spigot start + e.a = null; + e.b = null; + // Spigot end } public static int a(EntityLiving entityliving) { diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java index 7c23753..134897a 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -1,5 +1,6 @@ package net.minecraft.server; +import java.lang.ref.WeakReference; // Spigot import java.util.Iterator; import java.util.List; import java.util.UUID; @@ -24,7 +25,7 @@ public abstract class EntityInsentient extends EntityLiving { protected NavigationAbstract navigation; public PathfinderGoalSelector goalSelector; // CraftBukkit - public public PathfinderGoalSelector targetSelector; // CraftBukkit - public - private EntityLiving goalTarget; + private WeakReference goalTarget = new WeakReference(null); private EntitySenses bk; private ItemStack[] equipment = new ItemStack[5]; public float[] dropChances = new float[5]; // CraftBukkit - public @@ -84,7 +85,7 @@ public abstract class EntityInsentient extends EntityLiving { } public EntityLiving getGoalTarget() { - return this.goalTarget; + return this.goalTarget.get(); // Spigot } public void setGoalTarget(EntityLiving entityliving) { @@ -117,7 +118,7 @@ public abstract class EntityInsentient extends EntityLiving { entityliving = null; } } - this.goalTarget = entityliving; + this.goalTarget = new WeakReference(entityliving); // Spigot // CraftBukkit end } diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java index 006b172..0537d43 100644 --- a/src/main/java/net/minecraft/server/NetworkManager.java +++ b/src/main/java/net/minecraft/server/NetworkManager.java @@ -241,6 +241,7 @@ public class NetworkManager extends SimpleChannelInboundHandler { public void close(IChatBaseComponent ichatbasecomponent) { // Spigot Start this.preparing = false; + this.i.clear(); // Spigot End if (this.k.isOpen()) { this.k.close(); // We can't wait as this may be called from an event loop. diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSwell.java b/src/main/java/net/minecraft/server/PathfinderGoalSwell.java index c8eebf8..0c05aee 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalSwell.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalSwell.java @@ -3,7 +3,7 @@ package net.minecraft.server; public class PathfinderGoalSwell extends PathfinderGoal { EntityCreeper a; - EntityLiving b; + // EntityLiving b; // Spigot public PathfinderGoalSwell(EntityCreeper entitycreeper) { this.a = entitycreeper; @@ -18,22 +18,25 @@ public class PathfinderGoalSwell extends PathfinderGoal { public void c() { this.a.getNavigation().n(); - this.b = this.a.getGoalTarget(); + // this.b = this.a.getGoalTarget(); // Spigot } public void d() { - this.b = null; + // this.b = null; // Spigot } public void e() { - if (this.b == null) { + // Spigot start + EntityLiving b = this.a.getGoalTarget(); + if (b == null) { this.a.a(-1); - } else if (this.a.h(this.b) > 49.0D) { + } else if (this.a.h(b) > 49.0D) { this.a.a(-1); - } else if (!this.a.getEntitySenses().a(this.b)) { + } else if (!this.a.getEntitySenses().a(b)) { this.a.a(-1); } else { this.a.a(1); } + // Spigot end } } -- 2.1.0