Java

Java Generics — Bounded Wildcards (ковариантность и контравариантность)

Опубликовано

В данной статье мы обсудим инвариантность, ковариантность и контравариантность Java, а также разберемся при чем здесь дженерики и Bounded Wildcards. Вариантность Вариантность (variance) показывает как производные типы наследуются в зависимости от наследования между их исходными типами. Производные типы — это контейнеры, делегаты и прочие классы, которые оперируют другими типами внутри себя. Например, List<Integer> — это […]

Java

Интернирование строк в Java

Опубликовано

Интернирование — это техника хранения только одной иммутабельной копии объекта для повторяющихся значений объекта. Каждая такая уникальная копия называется intern-ом. Интернирование строк же означает, что всегда будет создаваться и храниться только одна уникальная копия строки для строк с одинаковым содержимым. Зачем это нужно Интернирование строк позволяет оптимизировать работу с строками как в аспекте времени, так […]

Java

Организация Java объектов в памяти

Опубликовано

В данной статье мы рассмотрим, как устроены Java объекты в памяти. Стандарт Java не указывает, какой должна быть организация памяти объектов, поэтому мы рассмотрим эти аспекты на примере open-source HotSpot JVM. Java Object Структура, описывающая Java Object, который неявно является родительским классом для всех объектов в Java, состоит из Mark Word и Klass Word. Mark […]