рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ, рдбрд╛рдЙрдирд▓реЛрдб рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╕рдорд╛рдзрд╛рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдлрд▓ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рдХрд╛рдлреА рдорд╛рдореВрд▓реА рд╕рд░реНрд╡рд░ (2 x Intel Xeon E5620, 64 GB RAM) рдЬреЛ рдПрдХ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ, рдиреЗ рдЖрда рдЯреЙрдордХреИрдЯ рдХрд╛ рднрд╛рд░ рдЙрдард╛рдпрд╛, рдЬреЛ 3000 рдПрдордмреА / рдПрд╕ рдХреЗ рдХреБрд▓ рдереНрд░реВрдкреБрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 70 рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдореЛрдЯрд┐рдХреЙрдиреНрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА Odnoklassniki рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдПрдХрд▓ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЙрдЪреНрдЪ рднрд╛рд░ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рдЙрдЪреНрдЪ-рд▓реЛрдб рд╕рд░реНрд╡рд░ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ, рдореИрдВ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдЬрд┐рдирд╕реЗ рд╣рдореЗрдВ рдирд┐рдкрдЯрдирд╛ рдерд╛ рдФрд░ рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдирд╛рдо рджрд┐рдпрд╛ред рдЖрдЬ рд╣рдо рдЬрд╛рд╡рд╛ рд╣реАрдк рдХреЗ рдмрд╛рд╣рд░ рдХреИрд╢рд┐рдВрдЧ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
рдХреИрд╢рд┐рдВрдЧ
рдЪреВрдВрдХрд┐ рдпрд╣ рднрдВрдбрд╛рд░рдг рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдкрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдФрд░ рдбрд┐рд╕реНрдХ рдкрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рд╡рд╛рд▓ рд╣реА рдирд╣реАрдВ рд╣реИ (рдбрд┐рд╕реНрдХ рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рдХреА рдЕрдбрд╝рдЪрди рдмрди рдЬрд╛рдПрдЧреА), рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рддреЗрдЬрд╝ рдХреИрд╢ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреИрд╢ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереАрдВ:
- 64-рдмрд┐рдЯ рдХреБрдВрдЬрд┐рдпрд╛рдБ, рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдорд╛рди: рдЫрд╡рд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд▓рдВрдмреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ 4 KB рдХреЗ рдФрд╕рдд рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде PNG, GIF рдпрд╛ JPG рдЫрд╡рд┐ рд╣реИ;
- рдЗрди-рдкреНрд░реЛрд╕реЗрд╕, рдЗрди-рдореЗрдореЛрд░реА: рдЕрдзрд┐рдХрддрдо рдПрдХреНрд╕реЗрд╕ рд╕реНрдкреАрдб рдХреЗ рд▓рд┐рдП, рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕ рдореЗрдореЛрд░реА рдореЗрдВ рд╣реИ;
- рд░реИрдо рдЙрдкрдпреЛрдЧ: рд╕рднреА рдЙрдкрд▓рдмреНрдз рд░реИрдо рдХреЛ рдХреИрд╢ рдХреЗ рддрд╣рдд рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
- рдСрдл-рд╣реАрдк: рдЬрд╛рд╡рд╛ рд╣реАрдк рдореЗрдВ 50 рдЬреАрдмреА рдбреЗрдЯрд╛ рд░рдЦрдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА;
- LRU рдпрд╛ FIFO: рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рдирдП рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдЧреГрд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;
- рдХрдВрд╕реАрдбрд░: рдПрдХ рд╕реМ рд╕реВрддреНрд░ рдореЗрдВ рдХреИрд╢ рдХрд╛ рд╕рдорд╡рд░реНрддреА рдЙрдкрдпреЛрдЧ;
- рджреГрдврд╝рддрд╛: рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреИрд╢реНрдб рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рд╕реЗ рд╣реАрдк рдХреЗ рдмрд╛рд╣рд░ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛
sun.misc.Unsafe
рдХреНрд▓рд╛рд╕ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ
getLong/putLong
рдореЗрдердб рдЬреЗрд╡реАрдПрдо рдЗрдВрдЯреНрд░рд┐рдВрд╕рд┐рдХреНрд╕ рд╣реИрдВ,
getLong/putLong
, рдЗрдирдХреЗ рдХреЙрд▓ рдХреЛ рдЬреЗрдЖрдИрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдорд╢реАрди рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореЗрдореЛрд░реА рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХреЗ рдмреАрдЪ рдХреИрд╢ рдХреА рджреГрдврд╝рддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХреА рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╢ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ (рдбрд┐рд╕реНрдХ рдкрд░ рдкрд╣реБрдВрдЪ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдЧрд╛), рдЗрд╕рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрддрд╛ рд╕реНрдерд╛рди рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ
рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреИрд╢ рдЕрдм рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдпрд╣ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдЦреЛрдП рдмрд┐рдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рд╕реНрдореГрддрд┐
рд▓рд┐рдирдХреНрд╕ рдкрд░, рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ
/dev/shm
рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, POSIX рдлрд╝рдВрдХреНрд╢рди
shm_open("name", ...)
open("/dev/shm/name", ...)
рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓
open("/dev/shm/name", ...)
рдмрд░рд╛рдмрд░ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрд╛рд╡рд╛ рдореЗрдВ, рд╣рдо рдирд┐рдпрдорд┐рдд рдлрд╛рдЗрд▓реЛрдВ рдХреА рддрд░рд╣ рд▓рд┐рдирдХреНрд╕ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдореНрди рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдПрдХ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЗрдореЗрдЬ-рдХреИрд╢ 1 рдЬреАрдмреА рд╣реИред рдпрджрд┐ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реА рдХреЛрдИ рд╡рд╕реНрддреБ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдореЛрд░реА рдореЗрдВ рд░рд╣реЗрдЧрд╛ рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред
RandomAccessFile f = new RandomAccessFile("/dev/shm/image-cache", "rw"); f.setLength(1024*1024*1024L);
рдЕрдм рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрддреЗ рд╕реНрдерд╛рди рдкрд░ рдореИрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕ рдореЗрдореЛрд░реА рд▓реЛрдХреЗрд╢рди рдХрд╛ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╡рд┐рдзрд┐ 1. рдХрд╛рдиреВрдиреА, рд▓реЗрдХрд┐рди рджреЛрд╖рдкреВрд░реНрдг
рд╣рдо рдЬрд╛рд╡рд╛ NIO API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
RandomAccessFile f = ... MappedByteBuffer buffer = f.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, f.length());
рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдореБрдЦреНрдп рджреЛрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк 2 GB рд╕реЗ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ Javadoc рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:
рдореИрдк рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЖрдХрд╛рд░; рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ Integer.MAX_VALUE рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПредрдЖрдк рдкреНрд░рд╛рдкреНрдд рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдорд╛рдирдХ рдмрд╛рдЗрдЯрдмрдлрд╝рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдпрд╛ рд╕реАрдзреЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдкрддреЗ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
public static long getByteBufferAddress(ByteBuffer buffer) throws Exception { Field f = Buffer.class.getDeclaredField("address"); f.setAccessible(true); return f.getLong(buffer); }
рдЗрд╕ рддрд░рд╣ рдХреЗ MpedByteBuffer рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд▓рдн рдЕрдирдореИрдк рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ GC рдХреЛ рдХреЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрд░реНрдз-рдХрд╛рдиреВрдиреА рддрд░реАрдХрд╛ рд╣реИ:
((sun.nio.ch.DirectBuffer) buffer).cleaner().clean();
рд╡рд┐рдзрд┐ 2. рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ, рд▓реЗрдХрд┐рди "рдЧреБрдкреНрдд рдЬреНрдЮрд╛рди" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
Oracle JDK рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рд╕
sun.nio.ch.FileChannelImpl
рдЬрд┐рд╕рдореЗрдВ рдирд┐рдЬреА рддрд░реАрдХреЗ
map0
рдФрд░
unmap0
, рдЬреЛ 2 рдЬреАрдмреА рдХреА рд╕реАрдорд╛ рд╕реЗ
unmap0
рд╣реИрдВред
map0
рд╕реАрдзреЗ "рдмрд╛рдврд╝" рд╕рд╛рдЗрдЯ рдХрд╛ рдкрддрд╛ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдФрд░ рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдпрджрд┐ рд╣рдо рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
Method map0 = FileChannelImpl.class.getDeclaredMethod( "map0", int.class, long.class, long.class); map0.setAccessible(true); long addr = (Long) map0.invoke(f.getChannel(), 1, 0L, f.length()); Method unmap0 = FileChannelImpl.class.getDeclaredMethod( "unmap0", long.class, long.class); unmap0.setAccessible(true); unmap0.invoke(null, addr, length);
рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рддрдВрддреНрд░ рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рджреЛрдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рджреЛрд╖ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрддреЗ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓ "рдореИрдк" рдХреА рдЬрд╛рдПрдЧреАред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рдХреИрд╢ рдореЗрдВ рдЙрд╕реА рдХреИрд╢ рдХреЗ рдЕрдВрджрд░ рдореЗрдореЛрд░реА рдкрддреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ: рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрддреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ рддреЛ рдРрд╕реЗ рд▓рд┐рдВрдХ рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ: рдпрд╛ рддреЛ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдПрдХ рдСрдлрд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдкреЗрдХреНрд╖ рд▓рд┐рдВрдХ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдпрд╛ рдЬреЗрдПрдирдЖрдИ рдпрд╛ рдЬреЗрдПрдирдП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдВред рд╡рд┐рдВрдбреЛрдЬ рдкрд░ Linux рдФрд░
MapViewOfFileEx рдкрд░
mmap рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдЖрдкрдХреЛ рдкрд╕рдВрджреАрджрд╛ рдкрддреЗ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ "рдореИрдк" рдХрд░рдирд╛ рд╣реИред
рдХреИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
рдХреИрд╢ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА, рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рд╕рд░реНрд╡рд░ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреИрд╢ рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИ, рдЕрд░реНрдерд╛рддред рд╡рд┐рдзрд┐
get
ред рд╣рдорд╛рд░реА рд▓рд┐рдкрд┐ рдореЗрдВ
put
рд╡рд┐рдзрд┐ рдХреЛ рдЕрдХреНрд╕рд░ рдХрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдзреАрдореА рднреА рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдПрдХ рдирд┐рд░рдВрддрд░ рдирд┐рд╢реНрдЪрд┐рдд-рдЖрдХрд╛рд░ рдХреЗ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдлреАрдлреЛ рдХреИрд╢ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╕рднреА рдореЗрдореЛрд░реА рдХреЛ рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреЗ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рд╣реИрд╢ рдЯреЗрдмрд▓ рдмрд╛рд╕реНрдХреЗрдЯ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЪрд╛рдмрд┐рдпрд╛рдБ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЕрдкрдиреЗ рд╕рд░рд▓рддрдо рд░реВрдк рдореЗрдВ
Segment s = segments[key % segments.length];

рдХрдИ рдЦрдВрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдХрдИ рд╣рдЬрд╛рд░ред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ
ReadWriteLock
рд▓рд┐рдП рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдпрд╛ рддреЛ рдПрдХ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд╛рдардХ рдпрд╛ рдХреЗрд╡рд▓ рдПрдХ рд▓реЗрдЦрдХ рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╡рд░рдг: рдорд╛рдирдХ
ReentrantReadWriteLock'
рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬрд╛рд╡рд╛ рд╣реАрдк рдореЗрдВ 2 рдЬреАрдмреА рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реБрдЖред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, JDK 6 рдореЗрдВ рдПрдХ
рддреНрд░реБрдЯрд┐ рд╣реИ рдЬреЛ рдХрд┐
ThreadLocal
рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ
ThreadLocal
рддрд╛рд▓рд┐рдХрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрддреНрдпрдзрд┐рдХ рдореЗрдореЛрд░реА рдЦрдкрдд рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдмрдЧ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреЗрдбреАрдХреЗ 7 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдордиреЗ рд╡реАрднрддреНрд╕
Lock
рдХреЛ
Semaphore
рдмрджрд▓ рджрд┐рдпрд╛ред рд╡реИрд╕реЗ, рдпрд╣рд╛рдБ рдереЛрдбрд╝рд╛ рд╡реНрдпрд╛рдпрд╛рдо рд╣реИ:
рд╕реЗрдорд╛рдлреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ReadWriteLock рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ?рддреЛ рдЦрдВрдбред рдЗрд╕рдореЗрдВ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдПрд░рд┐рдпрд╛ рдФрд░ рдПрдХ рдбреЗрдЯрд╛ рдПрд░рд┐рдпрд╛ рд╣реЛрддрд╛ рд╣реИред рд╕реВрдЪрдХрд╛рдВрдХ 256 рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдордмрджреНрдз рд╕рд░рдгреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╕рдорд╛рди рд▓рдВрдмрд╛рдИ рдХреЗ рд▓рд┐рдП 256 рд╕рдВрджрд░реНрднреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИред рд▓рд┐рдВрдХ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдмрд╛рдЗрдЯ рдореЗрдВ рдЗрд╕ рдмреНрд▓реЙрдХ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рднреАрддрд░ рдСрдлрд╕реЗрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ, рдЕрд░реНрдерд╛рддреН, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрд┐рддреНрд░ рд╕реНрд╡рдпрдВ, рдЗрд╖реНрдЯрддрдо рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рд▓рд┐рдП рдЖрда-рдмрд╛рдЗрдЯ рд╕реАрдорд╛ рдкрд░ рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд╕реЗрдЧрдореЗрдВрдЯ рдЗрд╕рдореЗрдВ рдХреБрдВрдЬреА рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░
put
рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХрд╛ рдкрддрд╛ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдкрд░рд┐рдкрддреНрд░ рдмрдлрд░ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдирдП рдмреНрд▓реЙрдХ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЬреИрд╕реЗ рд╣реА рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рдЬрдЧрд╣ рдирд┐рдХрд▓рддреА рд╣реИ, рдкрд╣рд▓реЗ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реЗрдЧрдореЗрдВрдЯ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдПрдХ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред
рд╡рд┐рдзрд┐
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрд╣реБрдд рддреЗрдЬрд╝ рдФрд░ рд╕рд░рд▓ рд╣реИ:
- рдХреБрдВрдЬреА рд╣реИрд╢ рдЙрд╕ рдЦрдВрдб рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЦреЛрдЬ рдХреА рдЬрд╛рдПрдЧреА;
- рд╕реВрдЪрдХрд╛рдВрдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЦреЛрдЬ рдЦреЛрдЬрддрд╛ рд╣реИ;
- рдпрджрд┐ рдХреБрдВрдЬреА рдкрд╛рдИ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЬрд┐рд╕ рдСрдлрд╕реЗрдЯ рдкрд░ рдбреЗрдЯрд╛ рд╕реНрдерд┐рдд рд╣реИ, рд╡рд╣ рд▓рд┐рдВрдХ рдХреЗ рд╕рд░рдгреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдПрдХ рдЪрдпрдирд┐рдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИ: рдпрд╣ рдмрд╛рдЗрдирд░реА рдХреБрдВрдЬреА рдЦреЛрдЬ рдХреА рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реБрдП, рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреИрд╢ рдореЗрдВ рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдкреБрдЯ рд╡рд┐рдзрд┐ рднреА рд╕рд░рд▓ рд╣реИ:
- рдПрдХ рдЦрдВрдб рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рдЕрдЧрд▓реЗ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХрд╛ рдкрддрд╛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд▓реЗ рдмреНрд▓реЙрдХ рдХреЗ рдкрддреЗ рдХреА рдЧрдгрдирд╛ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЦрд╛рддреЗ рдХреЗ рд╕рдВрд░реЗрдЦрдг рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдХреА рдЬрд╛рддреА рд╣реИ;
- рдпрджрд┐ рдЦрдВрдб рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рд▓рд┐рдВрдХреНрд╕ рдХреА рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд░реЗрдЦреАрдп рдЦреЛрдЬ рдЙрд╕ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реЗ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдвреВрдВрдврддреА рд╣реИ рдФрд░ рд╣рдЯрд╛рддреА рд╣реИ рдЬрд┐рдирдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдЕрдЧрд▓реЗ рдмреНрд▓реЙрдХ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
- рдмрд╛рдЗрдЯ рд╕рд░рдгреА рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдирдИ рдХреБрдВрдЬреА рдбрд╛рд▓реА рдЬрд╛рддреА рд╣реИред
рдХрд╛рдо рдХреА рдЧрддрд┐
рдмреЗрд╢рдХ, рд╣рдорд╛рд░реЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд╛рд╡рд╛ рд╣реАрдк рдХреЗ рдмрд╛рд╣рд░ рдХреИрд╢рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рджреЛрдиреЛрдВ рдореБрдлреНрдд рдФрд░ рднреБрдЧрддрд╛рди рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рд╣реИрдВ
рдЯреЗрд░рд╛рдХреЛрдЯрд╛ рдЗрд╣рдЪреЗ (рдЗрди-рдореЗрдореЛрд░реА рдСрдл-рд╣реАрдк рд╕реНрдЯреЛрд░реЗрдЬ) рдФрд░
рдЕрдкрд╛рдЪреЗ рдЬрд╛рд╡рд╛ рдХреИрд╢рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо ред рдпрд╣ рдЙрдирдХреЗ рд╕рд╛рде рдерд╛ рдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рддреБрд▓рдирд╛ рдХреАред рдкреНрд░рдпреЛрдЧ рд▓рд┐рдирдХреНрд╕ JDK 7u4 64-рдмрд┐рдЯ рдкрд░ рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рдЗрд╕рдореЗрдВ рддреАрди рдкрд░рд┐рджреГрд╢реНрдп рд╢рд╛рдорд┐рд▓ рдереЗ:
- рдкреБрдЯ: 0 рд╕реЗ 8 рдХреЗрдмреА рддрдХ рдкреНрд░рддреНрдпреЗрдХ рдЖрдХрд╛рд░ рдореЗрдВ 1 рдорд┐рд▓рд┐рдпрди рдорд╛рди рд▓рд┐рдЦреЗрдВ;
- рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ: 1 рдорд┐рд▓рд┐рдпрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬреЗрдВ;
- 90% get + 10% put: рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХреИрд╢ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд╕рдорд╛рди рдЕрдиреБрдкрд╛рдд рдореЗрдВ рд╕рдВрдпреЛрдЬрди / рдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдорд╛рдк рдкрд░рд┐рдгрд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ Ehcache рдФрд░ JCS рджреЛрдиреЛрдВ рдХрдИ рдмрд╛рд░ рдЕрд╡рд░ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо, рдЫрд╡рд┐ рдХреИрд╢рд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрдИ рдЕрдиреНрдп рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдкрд░реЗрд╢рди рдХреЛ
remove
рдФрд░
replace
, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдкрд┐рдЫрд▓реЗ рдореВрд▓реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХреА рдЧрдИ рд╕реНрдореГрддрд┐ рдХреЛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдХрд╣рд╛рдБ рджреЗрдЦрдирд╛ рд╣реИ?
рдЬреАрдердм рдкрд░ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕реНрд░реЛрдд:
https://github.com/odnoklassniki/shared-memory-cacheрд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдБ?
25 рдЬреБрд▓рд╛рдИ, 2012 рдХреЛ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд
JUG.RU рдХреА рдмреИрдардХ рдореЗрдВ,
рдЕрдкрдВрдЧрд┐рди рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рд░реНрд╡рд░ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдЕрдкрд░рдВрдкрд░рд╛рдЧрдд рддрдХрдиреАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдПрдХ
рдЖрд░рдкреАрд╕реА рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдКрдВрдЧрд╛ рдЬреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╣рдЬрд╛рд░реЛрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреНрд░рдорд╛рдВрдХрди рд╡рд┐рдзрд┐ рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рдирдХ рдЬрд╛рд╡рд╛ рддрдВрддреНрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред рд╣рдорд╛рд░реЗ рд╕рд╛рде рд░рд╣реЛ!