Pull to refresh
14
0
Alexander Kochurov @A_Kochurov

User

Send message

Слишком быстрый, слишком мегаморфный: что влияет на производительность вызова метода в Java?

Reading time9 min
Views21K
От переводчика:
спор сторонников написания final везде и всюду и их противников сродни спору остроконечников и тупоконечников. Как и в некоторых других сообществах, в нашей компании этот вялотекущий спор шел годами. И только эта статья Ричарда Вэрбёртона (Richard Warburton) позволила нашим остроконечникам взять верх.


О чём речь?

Начнем с небольшого рассказа. Несколько недель назад я отправил в список рассылки Java core libs своё предложение убрать модификатор final с некоторых методов. В результате возникло несколько тем для дискуссии. Одна из них, например, — выяснить, в какой степени ухудшится производительность вызова метода, который был final, если этот final с него убрать.

У меня были некоторые соображения о том, возникнет регрессия производительности или нет, но я сначала попытался узнать, публиковал ли кто-нибудь уже результаты бенчмарков по этому вопросу. К сожалению, я ничего не смог найти. Это не означает, что они не существуют или что другие люди не исследовали ситуацию, но я не встречал никакого кода, прошедшего экспертную проверку. Так что самое время написать несколько бенчмарков.
Читать дальше →
Total votes 42: ↑42 and ↓0+42
Comments5

Утечка памяти с ThreadLocal

Reading time3 min
Views19K
Дамы и господа, хочу поделиться с вами знатным способом выстрелить себе в ногу, которым я снес себе одну конечность по колено, хоть и мнил себя экспертом в области concurrency-библиотеки. Но подвела меня такая простая штука, как ThreadLocal, нежданно-негаданно бесследно поглотив пару лишних гигабайт памяти сервера.

Безусловно, памяти ваших серверов можно найти лучшее применение, чем хранение мусора. Поэтому не повторяйте мою ошибку. А именно: не стоит пытаться хранить в ThreadLocal ссылки на этот самый ThreadLocal, или на какой-то граф объектов, в конечном итоге ссылающийся на этот самый ThreadLocal.

image

Как же так?!
Total votes 35: ↑33 and ↓2+31
Comments6

Сериализация в Java: как заглянуть внутрь черного ящика

Reading time9 min
Views16K
Испокон веку в Java есть чудесный механизм сериализации, который позволяет, не прилагая особых умственных усилий, сохранять в виде последовательности байт сколь угодно сложные графы объектов. Формат хранения хорошо документирован, есть куча примеров, сериализованные объекты «весят» вполне себе немного, пересылаются по сети на раз, есть куча возможностей для кастомизации… Все это звучит прекрасно, но только до тех пор, пока вы не останетесь один на один каким-нибудь многомегабайтным бинарным файлом, содержащим очень-очень ценные и нужные именно сейчас данные.

Как голыми руками залезть в этот файл, и понять, что же хранится внутри этого огромного сериализованного графа объектов, не имея исходного кода? На эти и многие другие вопросы может ответить Serialysis – библиотека, которая позволит вам детально проанализировать сериализованные java-объекты (сериализованная форма — это мой вариант перевода выражения serial forms, решил не уходить далеко от оригинала). Таким образом можно получить информацию об объекте, которая не доступна через его публичный API. Библиотека также является полезным инструментом при тестировании сериализации ваших собственных классов.
Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments1

Information

Rating
Does not participate
Location
Германия
Date of birth
Registered
Activity