Ya I see, but this part is really poor
switch (state) {
case CHOP:
new Chop(this);
break;
case DROP:
new Drop(this);
break;
case IN_COMBAT:
new InCombat(this);
default:
break;
}
bascily every 50 milliseconds you are making a new instance of Chop()...
Why not create one ion onstart() and just do chop.run(); in your switch statement?
Atleast that would solve the huge memory usage here