2014-03-12 2 views
1

이 코드를 ASM 라이브러리를 사용하는 Java 클래스 파일의 메소드에 삽입하려면 어떻게해야합니까?이 코드를 ASM을 사용하는 메소드에 어떻게 추가합니까?

long MEGABYTE = 1024L * 1024L;    
Runtime runtime = Runtime.getRuntime(); 

runtime.gc(); 

long memory = runtime.totalMemory() - runtime.freeMemory();    
double memoryUsage=(double)memory/MEGABYTE; 
+0

질문이 명확하지 않습니다. 무엇을 시도하고 정확히 무엇을하고 싶습니까? –

+0

이것은 [AspectJ] (http://www.eclipse.org/aspectj/)의 완벽한 유스 케이스가 될 것이다.이 클래스는 또한 클래스 파일을 수정하지만 더 높은 수준에서 기능을 구현할 수있게한다. 이 옵션을 고려하면 답변으로 변환됩니다. – Tilo

답변

5

ASM 패키지에는 ASMifier이라는 유틸리티가 있습니다. 이 유틸리티는 컴파일 된 클래스를 ASM이이 코드를 작성하기위한 지시로 변환하는 데 사용할 수 있습니다. 코드를 구현하고 ASMifier를 사용하여 읽고 ASM ClassReader에서받은 바이트 스트림에 필요한 메소드를 추가하는 새로운 ASM ClassWriter에 작성된 명령어를 복사 할 수 있습니다.

귀하에게 이해가되지 않는 경우 : ASM documentation을 읽으십시오. 훌륭한 문서이며 위의 지침을 읽은 후에이를 수행하는 방법을 이해할 수 있습니다.

+0

ASMifier 5 [here] (http://xiantrimble.com/blog/2014/03/23/installing-asmifier/) 설치 및 사용에 대한 정보를 찾을 수 있습니다. 이 버전의 ASMifier는 Java 8 클래스 파일에서 작동합니다. –