In the room init we were declaring events like:
Code: Select all
public abstract class MyRoomExt extends BaseSFSExtension {
private ISFSEventListener reconnectEventHandler = new ISFSEventListener() {
@Override
public void handleServerEvent(ISFSEvent event) {
//to stuff
}
};
@Override
public void init() {
addEventListener(SFSEventType.USER_DISCONNECT, reconnectEventHandler);
}
@Override
public void destroy() {
removeEventListener(SFSEventType.USER_DISCONNECT, reconnectEventHandler);
}
}
After trial and error i found out that if i changed removeEventListener to removeEventsForListener, suddenly no more memory leak.
Code: Select all
public abstract class MyRoomExt extends BaseSFSExtension {
private ISFSEventListener reconnectEventHandler = new ISFSEventListener() {
@Override
public void handleServerEvent(ISFSEvent event) {
//to stuff
}
};
@Override
public void init() {
addEventListener(SFSEventType.USER_DISCONNECT, reconnectEventHandler);
}
@Override
public void destroy() {
//removeEventListener(SFSEventType.USER_DISCONNECT, reconnectEventHandler);
//no more leak suddenly!!
removeEventsForListener(reconnectEventHandler);
}
}
My problems are solved, so i can move on with my work, but i wonder why this behaviour was ocurring?
I am using server version 2.18, the only thing i can think is maybe the sfs2x.jar/sfs2x-core.jar is old(this project is going since 2018 and dont know since when the jar was updated)
At least learned to work with VisualVM with is amazing.