Re[2]: Java 9 - Unsafe removal
От: lpc Великобритания  
Дата: 18.10.15 14:34
Оценка:
Здравствуйте, Joie de vivre, Вы писали:

JDV>Все будет хорошо, ведь из приведенного списка больше всего пострадают библиотеки, которые использовали Unsafe для создания объектов без вызова конструкторов, а не те:

JDV> а) что выделяли память вне хипа через Unsafe, когда можно было взять DirectBuffer и никто бы не заметил (сюдя можно отнести Netty, которая находится во главе списка).
JDV> б) что обновляли поля объектов в thread safe manner, используя getFieldOffset и putXXXVolatile/Ordered.

JDV>Для а) уже давно есть nio с DirectByteBuffer-ами, которая уже упоминалась в этом треде, а б) заменят на VarHandles.


К сожалению DirectByteBuffer не является полноценной заменой того что давал unsafe. Как минимум, оно делает boundary checks, которые многим нафиг не сдались и которые просаживают performance в критических местах. В этих случаях лучше быть unsafe чем переписывать все на С++ (jni тоже не всегда подходит из-за оверхеда).

Про VarHandles не знал, спасибо, есть значит маленькая надежда. Маленькая потому что судя по всему в Оракл не до конца понимают как и главное зачем люди используют Unsafe. В моей индустрии (low latency java) это то что позволяет таки писать на java, а не на С++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.