I have the same problem that discussed in this youtube video. The video tries to give some kind of solution - detaching sevo from controller - but googleing the topic I found a lot of opinion that denies this method.
The servo is hunting round trying to hold an exact position. After detach() it no longer gets a control signal so it isn't trying to hold any position any more.
That sort of works if the servo is just sitting there not driving anything as in the video BUT if there is any load on the servo it is no longer trying to hold its position and the load can cause the servo to move. Not what you normally want.
Other things that can help include using a separate power supply for the servo not trying to run it from the Arduino 5V pin, being careful with the servo wiring (no breadboards, no croc clips). The real solution is to use a better quality servo. SG90s are cheap and mass produced and many of the ones you buy turn out to be even cheaper copies of the real TowerPro SG90.
After detach() it no longer gets a control signal so it isn't trying to hold any position any more.
It's clear.
BUT if there is any load on the servo it is no longer trying to hold its position and the load can cause the servo to move. Not what you normally want.
Of course not.
The real solution is to use a better quality servo. SG90s are cheap and mass produced and many of the ones you buy turn out to be even cheaper copies of the real TowerPro SG90.
Sorry for hear that.
Most servo problems are caused by inadequate power supplies -- like trying to run the servo from the Arduino 5V output. That usually won't work, and you can damage the Arduino even trying.
Always use a separate power supply (4xAA will work for one or two small servos). Don't forget to connect the grounds.