JavaTM 2 Platform
Standard Ed. 5.0

java.lang.instrument
ÀÎÅÍÆäÀ̽º Instrumentation


public interface Instrumentation

ÀÌ Å¬·¡½º´Â Java ÇÁ·Î±×·¥ ¾ð¾î Äڵ带 ÆÄ¾Ç Çϱâ À§ÇÑ ¼­ºñ½º¸¦ Á¦°øÇÕ´Ï´Ù. ÀνºÆ®¸£¸àÅ×À̼ÇÀ̶õ Åø·Î »ç¿ëÇÏ´Â µ¥ÀÌÅ͸¦ ¼öÁýÇÏ´Â °ÍÀ» ¸ñÀûÀ¸·ÎÀÇÇØ ¸Þ¼­µå¿¡ ¹ÙÀÌÆ® Äڵ带 Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù. º¯°æÀº ´ÜÁö Ãß°¡µÇ±â ¶§¹®¿¡ ÀÌ·¯ÇÑ ÅøÀº ¾îÇø®ÄÉÀÌ¼Ç »óųª µ¿ÀÛÀ» º¯°æÇÏÁö ¾Ê½À´Ï´Ù. »óųª µ¿ÀÛ¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â ÀÌ·± Á¾·ùÀÇ Åø¿¡´Â °¨½Ã ¿¡ÀÌÀüÆ®, ÇÁ·Î filer, Ä«¹ö¸®Áö analyzer ¹× À̺¥Æ® ·Î°ÅµîÀÌ ÀÖ½À´Ï´Ù.

InstrumentationÀÎÅÍÆäÀ̽ºÀÇ ÀνºÅϽº¿¡ ¾×¼¼½º ÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ¿¡ÀÌÀüÆ® Ŭ·¡½º¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ýÀ¸·Î JVM¸¦ ½ÃÀÛÇÏ´Â °ÍÀÔ´Ï´Ù (the package specification¸¦ ÂüÁ¶). InstrumentationÀνºÅϽº´Â ±× ¿¡ÀÌÀüÆ® Ŭ·¡½ºÀÇ premain ¸Þ¼­µå¿¡°Ô °Ç³×Áý´Ï´Ù. ¿¡ÀÌÀüÆ®°¡ InstrumentationÀνºÅϽº¸¦ ÃëµæÇϸé, ÀνºÅϽº»óÀÇ ¸Þ¼­µå¸¦ ¾ðÁ¦¶óµµ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù .

µµÀÔµÈ ¹öÀü :
JDK1. 5

¸Þ¼­µå °³¿ä
 void addTransformer (ClassFileTransformer  transformer)
          Á¦°øµÈ Æ®·£½º Æ÷¸Ó¸¦ µî·ÏÇÕ´Ï´Ù.
 Class [] getAllLoadedClasses ()
          JVM¿¡ ÀÇÇØ ÇöÀç ·Îµå »ç¶óÁú ¼ö ÀÖ¾î ¸ðµç Ŭ·¡½ºÀÇ ¹è¿­À» ¸®ÅÏÇÕ´Ï´Ù.
 Class [] getInitiatedClasses (ClassLoader  loader)
          loader°¡ ½ÃÀÛ ·Î´õÀÎ ¸ðµç Ŭ·¡½ºÀÇ ¹è¿­À» ¸®ÅÏÇÕ´Ï´Ù.
 long getObjectSize (Object  objectToSize)
          ÁöÁ¤µÈ °´Ã¼¿¡ ÀÇÇØ ¼ÒºñµÇ´Â ±â¾ï ¿µ¿ªÀÇ ¿ë·®ÀÇ ±¸Çö °íÀ¯ÀÇ ±Ù»çÄ¡¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 boolean isRedefineClassesSupported ()
          ÇöÀçÀÇ JVM ±¸¼ºÀÌ Å¬·¡½ºÀÇ ÀçÁ¤ÀǸ¦ Áö¿ø ÇÏ°í ÀÖÀ»Áö ¾î¶³Áö¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 void redefineClasses (ClassDefinition [] definitions)
          Á¦°øµÈ Ŭ·¡½º ÆÄÀÏÀ» »ç¿ëÇØ Á¦°øµÈ Ŭ·¡½º¼¼Æ®¸¦ ÀçÁ¤ÀÇÇÕ´Ï´Ù.
 boolean removeTransformer (ClassFileTransformer  transformer)
          Á¦°øµÈ Æ®·£½º Æ÷¸ÓÀÇ µî·ÏÀ» ÇØÁ¦ÇÕ´Ï´Ù.
 

¸Þ¼­µåÀÇ »ó¼¼

addTransformer

void addTransformer(ClassFileTransformer  transformer)
Á¦°øµÈ Æ®·£½º Æ÷¸Ó¸¦ µî·ÏÇÕ´Ï´Ù. ÀÌ°Í¿¡ ÀÇÇØ µî·ÏµÈ Æ®·£½º Æ÷¸Ó°¡ ÀÇÁ¸µÈ Ŭ·¡½ºÀÇ Á¤ÀǸ¦ Á¦¿ÜÇØ, Àå·¡ÀÇ ¸ðµç Ŭ·¡½º Á¤ÀÇ´Â Æ®·£½º Æ÷¸Ó¿¡ ÀÇÇØ È®Àε˴ϴÙ. º¹¼öÀÇ Æ®·£½º Æ÷¸Ó°¡ µî·ÏµÇ¾úÀ» °æ¿ì, Ãß°¡µÈ ¼ø¼­¿¡ È£ÃâÇÕ´Ï´Ù. Æ®·£½º Æ÷¸Ó°¡ ½ÇÇàÁß¿¡ ¿¹¿Ü¸¦ Throw Çϸé, JVM´Â µî·ÏµÇ¾î ÀÖ´Â ±× ¿ÜÀÇ Æ®·£½º Æ÷¸Ó¸¦ ¼ø¼­¿¡ È£ÃâÇÕ´Ï´Ù. °°Àº Æ®·£½º Æ÷¸Ó¸¦ ¿©·¯ Â÷·Ê Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. addTransformer¸¦ »ç¿ëÇØ µî·ÏµÈ ¸ðµç Æ®·£½º Æ÷¸Ó´Â ¿ÜºÎÀÇ JVMTI ClassFileLoadHook À̺¥Æ® ¸®½º³Ê°¡ È®ÀÎÇϱâ Àü¿¡ Ç×»ó ¸ðµç Ŭ·¡½º ÆÄÀÏÀ» È®ÀÎÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â class specification ·Î ±â¼úµÇ°í ÀÖµµ·Ï, ÀνºÆ®¸£¸àÅ×À̼ÇÀ¸·Î »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.

ÆĶó¹ÌÅÍ:
transformer - µî·ÏÇÏ´Â Æ®·£½º Æ÷¸Ó
¿¹¿Ü:
NullPointerException - null Æ®·£½º Æ÷¸Ó¸¦ °Ç³×ÁÖ¾úÀ» °æ¿ì

removeTransformer

boolean removeTransformer(ClassFileTransformer  transformer)
Á¦°øµÈ Æ®·£½º Æ÷¸ÓÀÇ µî·ÏÀ» ÇØÁ¦ÇÕ´Ï´Ù. µî·Ï ÇØÁ¦µÈ Æ®·£½º Æ÷¸Ó´Â Àå·¡ Ŭ·¡½º Á¤ÀǸ¦ È®ÀÎÇÒ ¼ö ¾ø°Ô µË´Ï´Ù. Á÷Àü¿¡ Ãß°¡µÈ ÀÏÄ¡ÇÏ´Â Æ®·£½º Æ÷¸ÓÀÇ ÀνºÅϽº¸¦ »èÁ¦ÇÕ´Ï´Ù. Ŭ·¡½º ·ÎµùÀÇ multi-threadÀû ¼ºÁú¿¡ÀÇÇØ »èÁ¦µÈ ÈÄ¿¡µµ Æ®·£½º Æ÷¸Ó¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù . ÀÌ·¯ÇÑ »óȲÀ» °í·ÁÇØ, ½ÅÁßÇÏ°Ô Æ®·£½º Æ÷¸Ó¸¦ ±â¼úÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
transformer - µî·ÏÀ» ÇØÁ¦ÇÏ´Â Æ®·£½º Æ÷¸Ó
¹Ýȯ°ª:
Æ®·£½º Æ÷¸Ó°¡ ¹ß°ßµÇ¾î, »èÁ¦µÇ¾úÀ» °æ¿ì´Â true. Æ®·£½º Æ÷¸Ó°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì´Â false
¿¹¿Ü:
NullPointerException - null Æ®·£½º Æ÷¸Ó¸¦ °Ç³×ÁÖ¾úÀ» °æ¿ì

isRedefineClassesSupported

boolean isRedefineClassesSupported()
ÇöÀçÀÇ JVM ±¸¼ºÀÌ Å¬·¡½ºÀÇ ÀçÁ¤ÀǸ¦ Áö¿ø ÇÏ°í ÀÖÀ»Áö ¾î¶³Áö¸¦ ¸®ÅÏÇÕ´Ï´Ù. ÀÌ¹Ì ·Îµå µÇ°í Àִ Ŭ·¡½º¸¦ ÀçÁ¤ÀÇÇÏ´Â ±â´ÉÀº JVM ¿É¼ÇÀÇ ±â´ÉÀÔ´Ï´Ù. ´ÜÀÏÀÇ JVM 1°³ÀÇ ÀνºÅϽº »ý¼ºµ¿¾È¿¡ ÀÌ ¸Þ¼­µå¿¡ º¹¼öÀÇ È£ÃâÀ» ½Ç½ÃÇϸé, Ç×»ó °°Àº ´ë´äÀÌ ¸®Åϵ˴ϴ٠.

¹Ýȯ°ª:
ÇöÀçÀÇ JVM ±¸¼ºÀÌ Å¬·¡½ºÀÇ ÀçÁ¤ÀǸ¦ Áö¿øÇÏ´ÂÀÎ °æ¿ì´Â true, Áö¿ø ÇÏÁö ¾Ê´Â °æ¿ì´Â false
°ü·Ã Ç׸ñ:
redefineClasses(java.lang.instrument.ClassDefinition[])

redefineClasses

void redefineClasses(ClassDefinition [] definitions)
                     throws ClassNotFoundException,

                            UnmodifiableClassException 
Á¦°øµÈ Ŭ·¡½º ÆÄÀÏÀ» »ç¿ëÇØ Á¦°øµÈ Ŭ·¡½º¼¼Æ®¸¦ ÀçÁ¤ÀÇÇÕ´Ï´Ù. µ¿½Ã¿¡ 1°³ ÀÌ»óÀÇ Å¬·¡½º¿¡ ´ëÇؼ­ ÀÎÅͶô µÈ º¯°æ (Ŭ·¡½º A ÀçÁ¤ÀǴ Ŭ·¡½º B ÀçÁ¤ÀǸ¦ ÇÊ¿ä·Î ÇÏ´Â µî)À» °¡´ÉÇÏ°Ô Çϱâ À§Çؼ­ ¼¼Æ®»ó¿¡¼­ µ¿ÀÛÇÕ´Ï´Ù.

ÀçÁ¤ÀÇµÈ ¸Þ¼­µå°¡ È°¼ºÈ­µÈ ½ºÅà ÇÁ·¹ÀÓÀ» °¡Áö´Â °æ¿ì, È°¼ºÈ­µÈ ½ºÅà ÇÁ·¹ÀÓÀº ¿øÀÇ ¸Þ¼­µåÀÇ ¹ÙÀÌÆ® Äڵ带 °è¼ÓÇØ ½ÇÇàÇÕ´Ï´Ù. ÀçÁ¤ÀÇµÈ ¸Þ¼­µå´Â »õ·Î¿î È£Ãâ·Î »ç¿ëµË´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â °üÇàÀÇ JVM ½Ã¸àƽ½º¾Æ·¡¿¡¼­ ¹ß»ýÇÏ´Â ÃʱâÈ­¸¦ Á¦¿ÜÇØ, ÃʱâÈ­¸¦ ¹ß»ý½ÃÅ°Áö ¾Ê½À´Ï´Ù. Áï, Ŭ·¡½ºÀÇ ÀçÁ¤ÀÇ¿¡¼­´Â Ŭ·¡½ºÀÇ ÃʱâÈ­ÀÚ´Â ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. static º¯¼öÀÇ °ªÀº È£ÃâÇØ ÀüÀÇ °ª´ë·Î À¯ÁöµË´Ï´Ù.

ÀçÁ¤ÀÇµÈ Å¬·¡½ºÀÇ ÀνºÅϽº´Â ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.

µî·ÏµÈ Æ®·£½º Æ÷¸Ó´Â ÀçÁ¤ÀÇ Á¶ÀÛÀÌ Àû¿ëµÇ±â Àü¿¡ È£ÃâÇÕ´Ï´Ù.

ÀçÁ¤ÀÇ¿¡¼­´Â ¸Þ¼­µåÀÇ º»¹®, Á¤¼ö Ç® ¹× ¼Ó¼ºÀÇ º¯°æÀÌ °¡´ÉÇÕ´Ï´Ù. ´Ù¸¸, ÀçÁ¤ÀÇ¿¡¼­´Â ÇÊµå ¶Ç´Â ¸Þ¼­µåÀÇ Ãß°¡ »èÁ¦, ȤÀº À̸§ÀÇ º¯°æ, ¸Þ¼­µåÀÇ ½Ã±×´ÏÃÄÀÇ º¯°æ, ȤÀº »ó¼ÓÀÇ º¯°æÀº ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ·¯ÇÑ Á¦¾àÀº Àå·¡ ¹öÀü À¸·Î ÇØ¼ÒµÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

±æÀÌ Á¦·ÎÀÇ definitions ¹è¿­Àº »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸, »ç¿ëÇßÀ» °æ¿ì, ÀÌ ¸Þ¼­µå´Â ¾Æ¹«°Íµµ ½ÇÇàÇÏÁö ¾Ê½À´Ï´Ù.

ÀÌ ¸Þ¼­µå°¡ ¿¹¿Ü¸¦ Throw ÇßÀ» °æ¿ì, Ŭ·¡½ºÀÇ ÀçÁ¤ÀÇ´Â ÇàÇØÁöÁö ¾Ê½À´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â class specification ·Î ±â¼úµÇ°í ÀÖµµ·Ï, ÀνºÆ®¸£¸àÅ×À̼ÇÀ¸·Î »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.

ÆĶó¹ÌÅÍ:
definitions - ´ëÀÀÇÏ´Â Á¤ÀǸ¦ »ç¿ëÇØ ÀçÁ¤ÀÇÇϴ Ŭ·¡½ºÀÇ ¹è¿­
¿¹¿Ü:
ClassNotFoundException - ÁöÁ¤µÈ Ŭ·¡½º°¡ ¹ß°ßµÇÁö ¾Ê´Â °æ¿ì
UnmodifiableClassException - ÁöÁ¤µÈ Ŭ·¡½º¸¦ º¯°æÇÒ ¼ö ¾ø´Â °æ¿ì
UnsupportedOperationException - JVM ÇöÀçÀÇ ±¸¼ºÀÌ ÀçÁ¤ÀÇ (isRedefineClassesSupported() °¡ false)¸¦ Çã°¡ÇÏÁö ¾Ê´ÂÁö, ÀçÁ¤ÀÇ·Î Áö¿ø µÇ¾î ÀÖÁö ¾ÊÀº º¯°æÀ» ½Ç½ÃÇßÀ» °æ¿ì
ClassFormatError - µ¥ÀÌÅÍ°¡ À¯È¿ÇÑ Å¬·¡½º¸¦ Æ÷ÇÔÇÏÁö ¾Ê¾Ò´ø °æ¿ì
NoClassDefFoundError - Ŭ·¡½º ÆÄÀÏÀÇ À̸§ÀÌ Å¬·¡½ºÀÇ À̸§°ú µ¿ÀÏÇÏÁö ¾ÊÀº °æ¿ì
UnsupportedClassVersionError - Ŭ·¡½º ÆÄÀÏ ¹öÀü ¹øÈ£°¡ Áö¿ø µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì
ClassCircularityError - »õ·Î¿î Ŭ·¡½º°¡ ¼øȯÀ» Æ÷ÇÔÇÑ °æ¿ì
LinkageError - ¸µÅ°Áö ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì
NullPointerException - Á¦°øµÈ Á¤ÀÇ ¹è¿­ ¶Ç´Â ±× ÄÄÆÛ³ÍÆ®°¡ nullÀÎ °æ¿ì
°ü·Ã Ç׸ñ:
isRedefineClassesSupported(), addTransformer(java.lang.instrument.ClassFileTransformer), ClassFileTransformer

getAllLoadedClasses

Class [] getAllLoadedClasses()
JVM¿¡ ÀÇÇØ ÇöÀç ·Îµå »ç¶óÁú ¼ö ÀÖ¾î ¸ðµç Ŭ·¡½ºÀÇ ¹è¿­À» ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
JVM¿¡ ÀÇÇØ ·Îµå µÈ ¸ðµç Ŭ·¡½º¸¦ Æ÷ÇÔÇÑ ¹è¿­. Ŭ·¡½º°¡ ¾ø´Â °æ¿ì´Â ±æÀÌ Á¦·ÎÀÇ ¹è¿­

getInitiatedClasses

Class [] getInitiatedClasses(ClassLoader  loader)
loader°¡ ½ÃÀÛ ·Î´õÀÎ ¸ðµç Ŭ·¡½ºÀÇ ¹è¿­À» ¸®ÅÏÇÕ´Ï´Ù. Á¦°øµÈ ·Î´õ°¡ nullÀÎ °æ¿ì, bootstrap Ŭ·¡½º ·Î´õ¿¡ ÀÇÇØ ½ÃÀÛµÈ Å¬·¡½º°¡ ¸®Åϵ˴ϴ٠.

ÆĶó¹ÌÅÍ:
loader - ½ÃÀÛÇÑ Å¬·¡½º ¸®½ºÆ®°¡ ¸®ÅÏµÈ ·Î´õ
¹Ýȯ°ª:
·Î´õ°¡ ½ÃÀÛ ·Î´õÀÎ ¸ðµç Ŭ·¡½º¸¦ Æ÷ÇÔÇÑ ¹è¿­. Ŭ·¡½º°¡ ¾ø´Â °æ¿ì´Â ±æÀÌ Á¦·ÎÀÇ ¹è¿­

getObjectSize

long getObjectSize(Object  objectToSize)
ÁöÁ¤µÈ °´Ã¼¿¡ ÀÇÇØ ¼ÒºñµÇ´Â ±â¾ï ¿µ¿ªÀÇ ¿ë·®ÀÇ ±¸Çö °íÀ¯ÀÇ ±Ù»çÄ¡¸¦ ¸®ÅÏÇÕ´Ï´Ù. °á°ú¿¡´Â °´Ã¼ÀÇ ¿À¹öÇìµåÀÇ ÀϺΠ¶Ç´Â ¸ðµç °ÍÀÌ Æ÷Ç﵃ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. µû¶ó¼­, ±¸Çö³»¿¡¼­ÀÇ ºñ±³¿¡´Â µµ¿òÀÌ µË´Ï´Ù¸¸, ±¸Çö°£¿¡¼­ÀÇ ºñ±³¿¡´Â µµ¿òÀÌ µÇÁö ¾Ê½À´Ï´Ù. JVM ´ÜÀÏÀÇ È£Ã⵿¾È¿¡ ±Ù»ç°ªÀÌ ¹Ù²ð °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
objectToSize - »çÀÌÁ Æò°¡ÇÏ´Â °´Ã¼
¹Ýȯ°ª:
ÁöÁ¤µÈ °´Ã¼¿¡ ÀÇÇØ ¼ÒºñµÇ´Â ±â¾ï ¿µ¿ªÀÇ ¿ë·®ÀÇ ±¸Çö °íÀ¯ÀÇ ±Ù»çÄ¡
¿¹¿Ü:
NullPointerException - Á¦°øµÈ °´Ã¼°¡ nullÀÎ °æ¿ì

JavaTM 2 Platform
Standard Ed. 5.0

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.