|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
Допустим, что я создал ссылочную переменную (пусть это будет ссылка типа MyClass, например) класса MyClass, в котором определено много методов и объявлено много полей. Каков размер ссылки? Зависит ли ее размер от числа методов и полей класса? Непрерывно ли они лежат в памяти или нет? Как в памяти лежат методы и конструкторы класса? Стек, или куча, или вообще дискретно, то есть не непрерывно? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2020, 20:35 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
Имхо тебе это сейчас совсем не нужно. ты можешь нагуглить любые подробности об внутренней организации jvm, но это тебе никак особо не поможет в твоих начинаниях. Ссылка на класс это всего лишь ссылка - т.е. адрес по которому можно найти экземпляр класса в памяти. Каким бы большим этот экземпляр не был и сколько методов он бы не имел, ссылка будет строго определенного размера в зависимости от разной фигни, которая тебе сейчас абсолютно не нужна. Так что можешь себе ни в чем не отказывать, создавай ссылок сколько нужно. Конечно можно ознакомиться с потрохами более углубленно, но не на этом этапе и не в твоей ситуации. Таковое мое мнение ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2020, 22:13 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
Alexandrietz, Ты перепутал с ЯП С++. Удивительно, но в нынешнем веке и в java это автоматизировано. Программист не парится этими задачами. Скажи, зачем вводили умные указатели? Сборщики мусора? Так что я согласен с chpasha, тебе это не нужно) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2020, 22:27 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
Alexandrietz Допустим, что я создал ссылочную переменную (пусть это будет ссылка типа MyClass, например) класса MyClass, в котором определено много методов и объявлено много полей. Каков размер ссылки? Зависит ли ее размер от числа методов и полей класса? Непрерывно ли они лежат в памяти или нет? Как в памяти лежат методы и конструкторы класса? Стек, или куча, или вообще дискретно, то есть не непрерывно? Вот почитай для начала. Тут должны быть главные ответы на вопросы такого толка https://docs.oracle.com/javase/specs/jvms/se14/jvms14.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2020, 22:30 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
Alexandrietz Про размер ссылки. Однозначного ответа нет. Для классической (Oracle/OpenJDK) он обычно 32 бита для 32х битный JVM и может быть 32 и 64 бита для 64х битной в зависимости от опции -Xmx32g При этом указатель может быть гранулярный но экономный. Или точный но расточительный в смысле расхода на ячейку хранения. И размер ссылки не зависит от того на что она указывает. Здесь есть аналогия с С++. Если речь идет о какой-то мобильной Java то там - я не знаю. Может быть что угодно. По всем твоим остальным вопросам. Если тебя на собеседовании спросят про размер Java-объекта в памяти - то сразу отвечай что JVM-спецификация не регламентирует это вообще. Тоесть мы не знаем как будут скомпонованы поля в непрерывной памяти объекта. И мы не знаем каков будет общий размер. Мы можем иногда смотреть через специальные служебные системные библиотеки типа Код: java 1.
Но и этот размер надо понимать просто как частный случай для данной версии софта и для ОС и для архитектуры железа. В других - он просто будет другой. Кроме того надо понимать что есть размеры deep/shallow. Тоесть размер объекта вместе с примитивными полями или размер объекта рекурсивно со всеми под-объектами которые входят в него. Типа дерево. На эту тему лучше всего скачай утилиту Eclipse-Memory-Analyzer позапускай и просто понаблюдай какие отчоты она выдает по Java-процессам. По поводу твоего вопроса Как в памяти лежат методы и конструкторы класса? Стек, или куча, или вообще дискретно, то есть не непрерывно? Тут вообще полный капец. На этот вопрос нельзя просто так ответить. Память методов и конструкторов лежит в двух местах. Это собственно байт-код который грузит classloader. И есть бинарный код который собрал JIT после нескольких итераций использования байткода. Байт-код ты можешь увидеть глазами. Это и есть тело .class - файла который ты компилируешь. По второму вопросу - я пока не знаю. Но ты попробуй просто переварить эту инфу и может тебе сейчас не надо лезть так глубоко в эти недра. От джуна этого никто не потребует. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2020, 23:30 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Помню, как в C++ надо было вручную освобождать память с помощью delete. Тут, слава Богу, есть garbage collector. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2020, 23:30 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
Alexandrietz, Все делают для того чтобы системных программистов и их вопросов становилось все меньше. А прикладных становилось больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2020, 09:52 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
как раз таки правильные вопросы задаёт человек. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2020, 14:14 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Alexandrietz, Все делают для того чтобы системных программистов и их вопросов становилось все меньше. А прикладных становилось больше. нет такого понятия как системный, прикладной и пр. программисты. И никогда не было. Это придумали чтобы выделить коболистов, которые не могут пользоваться другими ЯП (в силу специфики Кобола). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2020, 14:15 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
dakeiras как раз таки правильные вопросы задаёт человек. да, для освоения явы и получения первой работы, жизненно необходимо выяснить размер ссылок на объекты ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2020, 14:33 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
dakeiras, Угу. И тимлида скажи нету. И деления на кодировщика и программиста. И врачи не делятся на хирургов и проктологов. Ты с луны наверно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2020, 14:40 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
dakeiras как раз таки правильные вопросы задаёт человек. У нас форум не ПТ. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2020, 14:41 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp dakeiras, Угу. И тимлида скажи нету. И деления на кодировщика и программиста. И врачи не делятся на хирургов и проктологов. Ты с луны наверно. Просто я стараюсь смотреть на вещи непредвзято и самостоятельно анализировать. В agile - кодировщики именно. Программисты это отдельно. Тимлид это в agile который гундит что ему имя класса не нравится и прочие бессмысленные вещи совершенно типа code smells. Он есть. А вот "системных" программистов нет. Есть системные инженеры (инженеры системотехники по нашей терминологии). Могут программировать. При этом именно прикладную часть. Системные программисты это те кто пишет на C и на разных asm, микрокод, ядро ОС и прочее. Но конечно вы не их имели в виду. У нас в бывшем совке все у кого в когде есть переменная типа number - считаются системными программистами. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2020, 19:14 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
chpasha dakeiras как раз таки правильные вопросы задаёт человек. да, для освоения явы и получения первой работы, жизненно необходимо выяснить размер ссылок на объекты для понимания это очень полезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2020, 19:15 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
dakeiras для понимания это очень полезно. Произнесение банальностей само по себе недостаточно - нужно еще уметь обосновать. что Шерлок Холмс говорил о пользе знания, что Земля крутится вокруг Солнца, для раскрытии преступлений? Вот тут примерно тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2020, 22:13 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
dakeiras У нас в бывшем совке ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 03:42 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
Zzz79 размер ссылки это фиксированные байты и зависят от системы ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 03:44 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
Alexandrietz, Это всё не важно. Жрать память оно в любом случае будет как не в себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 05:25 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
crutchmaster Жрать память оно в любом случае будет как не в себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 06:50 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
Alexandrietz Допустим, что я создал ссылочную переменную (пусть это будет ссылка типа MyClass, например) класса MyClass, в котором определено много методов и объявлено много полей. Каков размер ссылки? Зависит ли ее размер от числа методов и полей класса? Непрерывно ли они лежат в памяти или нет? Как в памяти лежат методы и конструкторы класса? Стек, или куча, или вообще дискретно, то есть не непрерывно? Идем сюда . Скачиваем исходники. Читаем их. Думаем. Для понимания стоит еще почитать это . Как все на самом деле устроено в JVM, тут вам вряд ли скажут. Эти знания не нужны, они скрыты под несколькими слоями абстракции. Т.к. JVM работает на нескольких платформах, как минимум ARM и x86, то работа с памятью, её выделение и пр. на них отличаются. Т.е. для ответа на данный вопрос, нужно еще знать под какой платформой будет работать код (тут уже указывали в 32 разрядной и 64 разрядной системе будет по разному). А так "НАФИГА" вам эти знания? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 08:05 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
mad_nazgul А так "НАФИГА" вам эти знания? все еще есть ненулевая вероятность, что он всех троллит, но презумпция невиновности однако :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 09:41 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
Именно троллит. А всё пишите и пишите)) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 10:02 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Зато каков талант! прошлый то вброс за 300 сообщений перевалил ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 11:15 |
|
Ссылочные переменные с точки зрения памяти PC/Notebook.
|
|||
---|---|---|---|
#18+
xerxf, В java без кода и на лени долго не удержаться. Максимум пару топиков и потом пропададают надолго. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2020, 11:37 |
|
|
start [/forum/topic.php?fid=59&msg=39973840&tid=2120759]: |
0ms |
get settings: |
4ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
30ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
430ms |
get tp. blocked users: |
1ms |
others: | 4ms |
total: | 480ms |
0 / 0 |