title: java heartbeat implementation for a large number of clients
body: <p>I've built a server application in java, where clients can connect . I've implemented a heartbeat system where the client is sending every x seconds a small message.
  On the server side I save in a HashMap the time the client has sent the message , and I use a TimerTask for every client to check every x seconds if I received any message from the client.</p>
  
  <p>Everything works ok for a small amount of client, but after the number of clients increase (2k+) the memory amount is very big, plus the Times has to deal with a lot of TimerTask and the program start to eat a lot of CPU.</p>
  
  <p>Is there a better way to implement this? I thought about using a database and make a select the clients that didn't sent any update in a certain amount of time.
  Do you think this will work better, or is a better way of doing this.</p>