
рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдЙрди рдкрд░ рдкреИрд╕реЗ рдХреА рд╕рдВрд╡реЗрджрдирд╣реАрди рдмрд░реНрдмрд╛рджреА рд╕реЗ рдЖрдЧрд╛рд╣ рдХрд░рдирд╛ рд╣реИред
рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рд╕реЗ рдмрд╛рдЗрдЯ рдХреЛрдб рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдЗрд╕ рд╕рдВрд░рдХреНрд╖рдг рдХреА рдкрд░рд┐рдзрд┐ рдкрд░ рджрд┐рдорд┐рддреНрд░реА рд▓реЗрд╕рдХреЛрд╡ рдХреЗ рдореВрд▓ рдХрд╛рдо рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ -
рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦреЗрдВ - рдСрдмреНрд╕рдлреНрдпреВрдЯрд░реНрд╕ рдПрдВрдб рдмрд┐рдпреЙрдиреНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ред
рд╡рд░реНрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рддрдВрддреНрд░ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЧрдИ рд╣реИ, рдФрд░ рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ ClassLoader рдпрд╛ JVMTI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб рдмрд╛рдЗрдЯ рдХреЛрдб рдХреЛ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рдмрд╛рдИрдкрд╛рд╕ рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдпрд╛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕реЗ рдХрдИ рдЙрддреНрдкрд╛рдж рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдПрдХ рджреЗрд╢реА рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдЬреЗрд╡реАрдПрдо рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреАрдмрдЧ рдореЛрдб рдпрд╛ рдПрдХреНрд╕рдЯреНрд░реВрдЬрд╝рди рдПрдЬреЗрдВрдЯреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣, рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рднреА рдЖрд╢реНрд╡рд╛рд╕рди рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЕрдкрдиреЗ рдмрд╛рдпреЛрдЯреЗрдХ рдХреА рд░рдХреНрд╖рд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрд▓рд╛рд╕ рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдСрдмрдлреНрдпреВрдЬрд╝реЗрдЯрд░реНрд╕ рдХреА рднреЗрджреНрдпрддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдПрдВ рдЬрд┐рд╕реЗ рд╡реЗ -XX рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: + TraceClassLoading рд╡рд┐рдХрд▓реНрдк рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рднреА рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХреНрд▓рд╛рд╕ рдлрд╛рдЗрд▓реЗрдВ рдЗрд╕ JVM рдЯреНрд░реЗрд╕ рд╕реНрддрд░ рдкрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред рд╣рдо рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ, OpenJDK рд╕реНрд░реЛрдд рдХреЛрдб рд▓реЗрдВрдЧреЗ рдФрд░ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдХреНрд▓рд╛рд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рдпреЛрдЯреЗрдХ рдЕрдкрд▓реЛрдб рдбрд╛рд▓реЗрдВред
рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рдбреЗрдмрд┐рдпрди рд▓рд┐рдирдХреНрд╕ 6.0.5 (рд╕реНрдерд┐рд░) рдФрд░ OpenJDK7 рд╕реНрд░реЛрдд рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╕реНрд░реЛрдд рд╕реЗ JDK рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
OpenJDK Build README ред
OpenJDK рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрдм -XX: + TraceClassLoading рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рддрдм рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ classes.dump рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рднрд░реА рд╣реБрдИ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд╛рдИрдЯреЗрдХреЛрдб рдХреЛ рдмрдЪрд╛рдПрдЧрд╛ред рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
{ int lengthClassName, byte[] className, int lengthByteCode, byte[] bytecode }, { next record тАж }, тАж
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рд╡рд╛рддрд╛рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд░реЗрдВ:
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ OpenJDK рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рд╣рдорд╛рд░реЗ
рдкреИрдЪ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдирд┐рдореНрди рдХреЛрдб рдХреЛ ClassFileParser :: parseClassFile рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╣реЙрдЯрд╕реНрдкреЙрдЯ / src / share / vm / classfile / classFileParser.cpp рдореЗрдВ рдЬреЛрдбрд╝реЗрдЧрд╛:
// dumping class bytecode // dump file format: // length of the class name - 4 bytes // class name // length of the class bytecode - 4 bytes // byte code // ... next class ... ClassFileStream* cfs = stream(); FILE * pFile; int length = cfs->length(); int nameLength = strlen(this_klass->external_name()); pFile = fopen("classes.dump","ab"); // size of the class name fputc((int)((nameLength >> 24) & 0XFF), pFile ); fputc((int)((nameLength >> 16) & 0XFF), pFile ); fputc((int)((nameLength >> 8) & 0XFF), pFile ); fputc((int)(nameLength & 0XFF), pFile ); // class name fwrite (this_klass->external_name() , 1, nameLength, pFile ); // size of the class bytecode fputc((int)((length >> 24) & 0XFF), pFile ); fputc((int)((length >> 16) & 0XFF), pFile ); fputc((int)((length >> 8) & 0XFF), pFile ); fputc((int)(length & 0XFF), pFile ); // class bytecode fwrite (cfs->buffer() , 1 , length, pFile ); fclose(pFile);
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ JDK рдареАрдХ рдЪрд▓ рд░рд╣рд╛ рд╣реИ:
рдкреИрдЪ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рдмрд┐рд▓реНрдб рдХреЛ рдЪрд▓рд╛рдПрдВ
рдЕрдЧрд▓рд╛, рд╕рдВрдХрд▓рд┐рдд JRE рдХреА рдмрд┐рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдБ: $ OPENJDK_SRC / build / linux-i586 / j2re-image / bin /
рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдХреЛ рдПрдХ рдПрдХрд▓ рдкреИрд░рд╛рдореАрдЯрд░ -XX рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВ: + TraceClassLoading:
рдФрд░ classes.dump рдХреЛ рджреЗрдЦреЗрдВ, рдЗрд╕рдореЗрдВ рд╕рднреА рдХреНрд▓рд╛рд╕ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреА рдЬреЛ JRE рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд▓реЛрдб рд╣реЛрддреА рд╣реИрдВред
рдФрд░ рдЕрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд, рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдУрдмрдлреНрдпреВрдЬрд╝реЗрдЯрд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдореЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рдХреБрдВрдЬреА "рдмрд╛рдЗрдЯ-рдХреЛрдб рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди" рджреНрд╡рд╛рд░рд╛ Google рдореЗрдВ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред SomeClassGuard.jar рдХреЗ рдЕрдВрджрд░, hierarchy com / **** / someclassguard / рдЗрдВрдЬрди рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХреНрд▓рд╛рд╕ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ, рдЖрдк рдХрд┐рд╕реА рднреА рдбрд┐рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕реЗрдЯ рдХрд░рдХреЗ рдЦреБрдж рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ HEX рджрд░реНрд╢рдХ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╣реЗрдбрд░ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм SomeClassGuard.jar рдЪрд▓рд╛рдПрдВ:
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ SomeClassGuard.jar рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП classes.dump рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдЫреЛрдЯрд╛ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦреЗрдВрдЧреЗ:
package openjdkmod; import java.io.DataInputStream; import java.io.EOFException; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class ClassesDumpExractor { public static void main(String[] args) throws FileNotFoundException, IOException { if (args.length != 2) { System.err.println("Usage openjdkmod.ClassesDumpExtractor <classes.dump file> <out dir>"); System.exit(-1); } File classesDumpFile = new File(args[0]); if (!classesDumpFile.exists()) { System.err.println("Source file: " + args[0] + " not found!"); System.exit(-1); } File outDir = new File(args[1]); if (!outDir.exists()) { outDir.mkdirs(); } DataInputStream din = new DataInputStream(new FileInputStream(classesDumpFile)); while (true) { try { int classNameLength = din.readInt(); byte[] classNameBytes = new byte[classNameLength]; din.readFully(classNameBytes); String className = new String(classNameBytes); System.out.println("className:" + className); int classLength = din.readInt(); byte[] classBytes = new byte[classLength]; din.readFully(classBytes); File parentDir = className.indexOf(".")>0?new File(outDir, className.substring(0,className.lastIndexOf(".")).replace(".", File.separator)):outDir; if(!parentDir.exists()) parentDir.mkdirs(); File outFile = new File(parentDir, (className.indexOf(".")>0?className.substring(className.lastIndexOf(".")+1):className)+".class"); FileOutputStream outFos = new FileOutputStream(outFile); outFos.write(classBytes); outFos.close(); } catch (EOFException e) { din.close(); return; } } } }
рдФрд░ рдЗрд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВ:
рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдореЗрдВ рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб рдХреНрд▓рд╛рд╕-рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдорд┐рд▓рддреА рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖ред
рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд░реНрде, рдЦрддрд░рдирд╛рдХ, рдорд╣рдВрдЧреА (рдХрдо рд╕реЗ рдХрдо рдореБрдХреНрдд рдирд╣реАрдВ) рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдмрд╛рдпреЛрдЯреЗрдХ рдХреА рд░рдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
1) рджреЗрд╢реА рдХреЛрдб рдореЗрдВ рдмрд╛рдпрдЯреЗрдХреЛрдб рд╕рдВрдХрд▓рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
2) рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдУрдлрд╝реНрд╕реНрдХреБрд╕реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рд╕рд┐рдХ рдУрдлрд╝реНрдпреВрд╕реИрдХреНрдЯрд░ рдХрд╛ рд╕рдВрдпреЛрдЬрдиред
рд╕реБрдкрд░-рдкреНрд░реЛрдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП: рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдЕрдкрдиреЗ рдЕрдВрджрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рднрдВрдбрд╛рд░рдг рдФрд░ рдмрд╛рдпреЛрдЯреЗрдХ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред
рдЙрдкрд░реЛрдХреНрдд рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдХреМрди рд╕рд╛ рдмрд╛рдЗрдЯ рдХреЛрдб рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
Note1:
рдЖрдк JDK рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - sun.misc.Unsafe рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХреЛ JVM рдХреЗ рдЕрдВрджрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдереЛрдбрд╝рд╛ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЯрд┐рдкреНрдкрдгреА 2:
рдареАрдХ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИред
рдиреЛрдЯ 3 : рдпрд╣рд╛рдВ рд╕реЗ рд▓реА рдЧрдИ рдореВрд▓ рдЫрд╡рд┐:
it.wikipedia.org/wiki/File : рдиреЗрдЯрдмреАрди-рдбреНрдпреВрдХред рдкреАрдПрдирдЬреА