It seems like there is a memory leak in the smack 3.2 (PacketReader.java) even in latest smack version i.e. 3.3.
So when connection breaks abruptly , then notifyConnectionError() method is getting called in PacketReader.java. In this method , on the very first line they are setting the done variable to true and then calling connection.shutdown(new Presence(Presence.Type.unavailable)) in XMPPConnection.java class.
In shutdown method in XMPPConnection.java , they are calling **packetReader.shutdown(); , **in whiich they are checking again done variable , which is already set as true and the block of code which clears some data structure is not getting called , leading to OOME.
We are getting OOME in InBandBytestreamManager.java class where a Map known as **managers **is failing. The code to clear this Map is written in block which is not getting called because of done variable.
Please suggest some solution.