unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4...
TRANSCRIPT
![Page 1: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/1.jpg)
Unsafe:халявазакончилась?
АлексейФедоров,Одноклассники/ JUG.ru
![Page 2: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/2.jpg)
2
Что такое Unsafe
• Оченьспециальныйобъект• СуществуетсJDK1.4 — уже15лет• НуженвClassLibrary,чтобыоттудадергать JVM
“AVM/libraryinterface,designedstrictlyforusewithintheJDK”
MarkReinhold,JavaPlatformArchitectJVMLS2015
![Page 3: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/3.jpg)
3
Что такое Unsafe
• Оченьспециальныйобъект• СуществуетсJDK1.4 — уже15лет• НуженвClassLibrary,чтобыоттудадергать JVM
![Page 4: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/4.jpg)
4
Используется в разных частях JDK
• 1.4— Reflection,Serialization,NIO• 1.5— JSR166(atomics,locks),CORBA,AWT• 6.0— JSR166(CopyOnWriteArrayList etc.)• 7 — JSR166(ForkJoin etc.),BigDecimal,java.lang.invoke• 8— JSR166(много!),MacOSXobjectiveCbridge
![Page 5: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/5.jpg)
5
sun.misc.Unsafe
• Лежитвприватномпакетеsun.misc- раньшевSunJDK- потомвOpenJDK- перекочевалвOracleJDK
![Page 6: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/6.jpg)
6
А что на других JDK?
![Page 7: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/7.jpg)
7
А что на других JDK?
![Page 8: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/8.jpg)
public final class Unsafe {
static {registerNatives();Reflection.registerMethodsToFilter(Unsafe.class, "getUnsafe");…
}
private Unsafe() {}
private static final Unsafe theUnsafe = new Unsafe();
@CallerSensitivepublic static Unsafe getUnsafe() {
Class cc = Reflection.getCallerClass();if (cc.getClassLoader() != null)
throw new SecurityException("Unsafe");return theUnsafe;
}
![Page 9: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/9.jpg)
9
Как получить Unsafe
public static final Unsafe UNSAFE = getUnsafe();
private static Unsafe getUnsafe() {try {
Field f = Unsafe.class.getDeclaredField("theUnsafe");f.setAccessible(true);return (Unsafe) f.get(null);
} catch (Exception e) {throw new RuntimeException(e);
}}
![Page 10: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/10.jpg)
10
И всё???
ПоумолчаниюSecutiry ManagerвJavaвыключен!
![Page 11: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/11.jpg)
11
И всё???
$ java -Djava.security.manager
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.sun.misc")
ПоумолчаниюSecutiry ManagerвJavaвыключен!
![Page 12: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/12.jpg)
12
«Тебя предупреждали»
$ javac Test.java
Test.java:2: warning: Unsafe is internal proprietary API and may be removed in a future releaseimport sun.misc.Unsafe;
^
![Page 13: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/13.jpg)
13
«Да мне пофиг!»
$ javac Test.java
Test.java:2: warning: Unsafe is internal proprietary API and may be removed in a future releaseimport sun.misc.Unsafe;
^
$ javac -XDignore.symbol.file Test.java
![Page 14: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/14.jpg)
ЧтоумеетUnsafe?
![Page 15: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/15.jpg)
![Page 16: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/16.jpg)
package cee.secr.misc;
public class MyUnsafe {
public native int getInt(long address);
#include <jni.h>
JNIEXPORT jint JNICALLJava_snow_misc_MyUnsafe(JNIEnv* env, jobject myUnsafe,
jlong address) {return *(jint*)address;
}
![Page 17: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/17.jpg)
Create stack frameMove arguments according to ABI
Wrap objects into JNI handlesObtain JNIEnv* and jclass
Trace method_entryLock if synchronized
Lazy lookup and linkingin_java à in_native thread transition
Call the native functionCheck for safepoint
Switch state to in_javaUnlock if synchronized
Notify method_exitUnwrap result, reset JNI handles block
Handle exceptionsRemove stack frame
Сколько стоит JNI
![Page 18: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/18.jpg)
18
Intrinsics
• Большинствометодов— intrisics:- getInt —> mov- compareAndSwapInt—> cmpxchg
![Page 19: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/19.jpg)
CAS// nativepublic final native boolean compareAndSwapInt(
Object o, long offset, int expected, int x);
//non-nativepublic final int getAndAddInt(
Object o, long offset, int delta) {int v;do {
v = getIntVolatile(o, offset);} while (!compareAndSwapInt(o, offset, v, v + delta));return v;
}
![Page 20: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/20.jpg)
AtomicInteger — i.getAndAdd(5)
loop:mov 0xc(%r10),%eaxmov %eax,%r11dadd $0x5,%r11dlock cmpxchg %r11d,0xc(%r10)sete %r11bmovzbl %r11b,%r11dtest %r11d,%r11dje loop
JDK 7u72 JDK 8u66
lock addl $0x5,0xc(%r10)
83
4615 11
132105
45 43
1 2 3 4
ops/μ
s
threads
-XX:+PrintAssembly
![Page 21: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/21.jpg)
Usecases
![Page 22: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/22.jpg)
22
Off-heap Collections
• Lists,sets,maps- Largecapacity>2GB- PredictableGCpauses- Noheapfragmentation- Datalocality
![Page 23: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/23.jpg)
23Data locality
Key
ValueKey
Value
Map.Entry Off-heaplayout
a b c a b c a b c
![Page 24: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/24.jpg)
24
I/O and persistence
• Persistentcachesandstorages- Memory-mappedfiles(64-bit)- Sharedmemory
• CooperationwithOS- Pointerarithmetic,alignment- mlock,madvise etc.
![Page 25: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/25.jpg)
25
IPC, Messaging
• Concurrentoff-heapbuffersandqueues• High-performancemessaging- Disruptor- Aeron:6Mmsg/s
• Shareddatastructures- ChronicleMap
![Page 26: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/26.jpg)
УдалениеUnsafe
![Page 27: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/27.jpg)
27
Тактика действий в случие удаления Unsafe
• Переписатькускикода- JNI- Reflection- NIO- etc.
![Page 28: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/28.jpg)
28
Тактика действий в случие удаления Unsafe
• Переписатькускикода- JNI- Reflection- NIO- etc.
• Какдействовать1. Новыйlayer:wrapper надUnsafe2. ЗаменитьнаwrapperнадpublicAPI
![Page 29: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/29.jpg)
Беда1:PerformanceDegradation
![Page 30: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/30.jpg)
Cassandra
Netty
Guava
Hazlecast
Mockito
GWT
HadoopZookeeper
Kafka
Gson
Neo4j
Grails
Spring
Disruptor
JRuby
Scala
Akka
![Page 31: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/31.jpg)
Cassandra
Netty
Guava
Hazlecast
Mockito
GWT
HadoopZookeeper
Kafka
Gson
Neo4j
Grails
Spring
JRuby
Scala
Akka
UnsafeDisruptor
![Page 32: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/32.jpg)
Беда2:Transitivelock-in
![Page 33: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/33.jpg)
33
Как так получилось?
$ javac Test.java
Test.java:2: warning: Unsafe is internal proprietary API and may be removed in a future releaseimport sun.misc.Unsafe;
^
![Page 34: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/34.jpg)
34
Как так получилось?
Слишкоммалоевангелизма,Oracle!
$ javac Test.java
Test.java:2: warning: Unsafe is internal proprietary API and may be removed in a future releaseimport sun.misc.Unsafe;
^
![Page 35: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/35.jpg)
Какразвиваласьситуация
![Page 36: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/36.jpg)
36
Хронология событий
• JEP200:TheModularJDK
![Page 37: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/37.jpg)
37
Хронология событий
• JEP200:TheModularJDK- MarkReinholdвыступилна Devoxx 2014
![Page 38: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/38.jpg)
38
Хронология событий
• JEP200:TheModularJDK- MarkReinholdвыступилна Devoxx 2014
• Постна blog.dripstat.com
![Page 39: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/39.jpg)
39
Хронология событий
• JEP200:TheModularJDK- MarkReinholdвыступилна Devoxx 2014
• Постна blog.dripstat.com• ChrisEngelbert изHazelcast началдискуссию
![Page 40: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/40.jpg)
40
Хронология событий
• JEP200:TheModularJDK- MarkReinholdвыступилна Devoxx 2014
• Постна blog.dripstat.com• ChrisEngelbert изHazelcast началдискуссию• ОбсуждениенаJСrete
![Page 41: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/41.jpg)
41
Хронология событий
• JEP200:TheModularJDK- MarkReinholdвыступилна Devoxx 2014
• Постна blog.dripstat.com• ChrisEngelbert изHazelcast началдискуссию• ОбсуждениенаJCrete• MarkReinholdвыступилнаJVMLS- всенемногоуспокоились
![Page 42: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/42.jpg)
42
Хронология событий
• JEP200:TheModularJDK- MarkReinholdвыступилна Devoxx 2014
• Постна blog.dripstat.com• ChrisEngelbert изHazelcast началдискуссию• ОбсуждениенаJCrete• MarkReinholdвыступилнаJVMLS- всенемногоуспокоились
• JEP260:EncapsulateMostInternalAPIs
![Page 43: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/43.jpg)
43
План замены Unsafe на public API
• ReplacementinJDK8à hideinJDK9- sun.misc.BASE64Encoderetc.- Availableviacommand-lineflag
• NoreplacementinJDK8à availableoutside- sun.misc.Unsafe,sun.reflect.ReflectionFactory- sun.misc.Cleaner,sun.misc.SignalHandler
• ReplacementinJDK9à hideinJDK9,removeinJDK10
![Page 44: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/44.jpg)
Чтоприходитназамену
![Page 45: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/45.jpg)
JEP193:VarHandlesExpectedinJava9
class Queue {int size;...
}
VarHandle queueSize = VarHandles.lookup().findFieldHandle(Queue.class, "size", int.class);
queueSize.addAndGet(10);
![Page 46: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/46.jpg)
46
• get, getVolatile, getAcquire, getOpaque• set, setVolatile, setRelease, setOpaque• compareAndSet, compareAndExchangeVolatile• compareAndExchangeAcquire, compareAndExchangeRelease• weakCompareAndSet, weakCompareAndSetAcquire, weakCompareAndSetRelease
• getAndSet, getAndAdd, addAndGet
VarHandle handle = VarHandles.arrayElement(int[].class)
VarHandle viewHandle = VarHandles.arrayElementViewHandle(byte[].class, long[].class, true);
![Page 47: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/47.jpg)
47
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(8);VarHandle bufferView =
VarHandles.byteBufferViewHandle(long[].class, true);
MemoryRegion region = MemoryRegion.allocateNative("myname", MemoryRegion.UNALIGNED, Long.MAX_VALUE);
VarHandle regionView =VarHandles.memoryRegionViewHandle(long[].class, true);
regionView.set(region, 0, Long.MAX_VALUE);return regionView.get(region, 0);
![Page 48: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/48.jpg)
48
Итоги
• Вендор услышалсообществоиизменилпланы- Вендор готовидальшеслушать- Сообществопредставляетсобойсилу,занимэкосистема
![Page 49: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/49.jpg)
49
Итоги
• Вендор услышалсообществоиизменилпланы- Вендор готовидальшеслушать- Сообществопредставляетсобойсилу,занимэкосистема
• Unsafeвсе-такивыпилят- Нопостепенно,втечениенесколькихлет
![Page 50: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/50.jpg)
50
Development @ Одноклассники
• TechBlog- http://habrahabr.ru/company/odnoklassniki
• Opensource- https://github.com/odnoklassniki
• Career- http://v.ok.ru
![Page 51: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/51.jpg)
БлагодарюАндреяПаньгина
@AndreyPangin
![Page 52: Unsafe: халява закончилась?2015.secrus.org/2015/files/027_fyodorov.pdf · 4 Используется в разных частях JDK • 1.4 —Reflection, Serialization,](https://reader034.vdocuments.net/reader034/viewer/2022043005/5f8c52b6328a982b765c1e61/html5/thumbnails/52.jpg)
Вопросыиответы