My game overheats phone and terrible FPS?

Hi everyone. I’m developing a game for android (and eventually iOS). This problem I’m describing didn’t always happen. It’s a recent thing. My game runs around 45FPS on my Galaxy S3 (it’s running a 4.4 ROM).

Basically what happens is I’ll be playing my game, and everything will be absolutely fine for a while. I can play my game for a while and it will be fine. Then after a while my game will just randomly drop below 20 FPS and stay there (sometimes even less, around 5FPS). I’ve also noticed that my phone will be very hot when this happens. It will start to overheat. Why does my game do this to my phone? Even when I exit the game my whole phone is very laggy (accessing menus, etc) and I have to pull the battery, let it cool down, and reboot to fix it.

I don’t get why this happens, my previous builds didn’t do this at all. My phone would get hot, but I could play forever and it wouldn’t start lagging. And I didn’t add anything significant I don’t think (just some GUI’s come to mind). Can somebody help me please? I just need to know what’s causing this sudden and persistent lag.
Here is the APK if anyone will test this for me:

Game is simple. Dodge oncoming obstacles. Tap left side of screen to switch to left wall, right to switch right. If you are testing it I would appreciate it if you kept pressing play again and played my game for around ~5-10 minutes if that’s not too much to reproduce the error.

When you fully use a mobile CPU or GPU, it gets warm and then it gets hot. When the temperature reaches a certain level, the hardware automatically decreases the max speed of the hardware until the temperature cools down. This is called thermal throttling, and it’s what you are seeing on your phone.

Now, the question is why is it getting hot, especially if it wasn’t before. The easiest way to answer that question is to profile your game, if you have Pro or can add some timers of your own. You can also think about what you changed or added recently. Since you have a previous version that you know worked, then it’s almost certainly something you changed that introduced the issue. Maybe it’s a new script or a fancy new visual effect or who knows.