Я — новичок в Java, по этому сорри, если вопрос глупый.
Суть в следующем — мы пишем сервер для онлайн игры, но не суть важно.
Допустим, есть класс «Player». В объектах этого класса хранятся всякие характеристики игроков — здоровье, сила, ловкость и т.п:
<br/>
public class Player extends Object {<br/>
public int hp = 0;<br/>
public int str = 0;<br/>
public int dex = 0;<br/>
public int agil = 0;<br/>
// ... и т.п.<br/>
}<br/>
Соответственно, таких объектов требуется по количеству столько же, сколько игроков.
Допустим, у нас 50 тыс. игроков. Памяти такие объекты будут жрать порядочно. По этому, хочется досканально понять расходование памяти джавой.
Соответственно, вопрос в следующем — если мне нужно создать какие-то методы, оперирующие с игроком — следует ли мне обязательно делать их статическими?
Почему я спрашиваю — я думал, что если я создаю какой-то не-статический метод в классе Player, то при каждом создании объекта этого класса в памяти будет выделяться место под код всех его методов. Т.е. если я хочу метод savePlayer(), то создав 50 тыс. игроков, я получу в памяти 50 тыс. копий кода этого метода. Что явно fail. И по-этому я обязан создавать статический метод типа savePlayer(Player player).
Я прав?
Просто, дело в том, что я решил это проверить. Посмотрел в профайлер Эклипса… Сейчас у меня одна инстанция Player занимает 112 байт. После этого я добавил не-статический метод в «плеера», запустил снова… и странно — инстанция плеера по-прежнему занимает 112 байт. Я ожидал увидеть увеличение размера инстанции «плеера» на размер кода добавленного метода.
Объясните, плиз.