본문 바로가기

반응형

JAVA

(13)
[자바] 스레드풀 튜닝 및 Executor 고급 활용 보호되어 있는 글입니다.
JVM 보호되어 있는 글입니다.
Java Garbage Collection Java 는 프로그램 코드에서 메모리를 명시적으로 지정하여 해제하지 않는다. 대신, Garbage Collector 가 이를 대신 수행해준다. 'weak generational hypothesis' 가설을 바탕으로 HotSpot VM에서는 크게 2개로 물리적 공간 (Young 영역 / Old 영역)으로 나누어 GC를 수행한다. 'weak generational hypothesis' 가설 - 대부분의 객체는 금방 접근 불가능 상태(unreachable)가 된다. - 오래된 객체에서 젊은 객체로의 참조는 아주 적게 존재한다. Young 영역 : 새롭게 생성한 객체. 대부분의 객체가 금방 접근 불가능 상태가 되기 때문에 많은 객체가 young 영역에 생성되었다가 사라짐 => Minor GC Old 영역 : 접..
[JAVA] try with resources Java 7 부터 등장한 AutoCloseable 인터페이스 try( ){ ..... } 위와 같은 형태로 사용이 가능하며 ( ) 안에 들어올 수 있는건 AutoCloseable 구현체 뿐이다. 더보기 AutoCloseable 인터페이스의 구현체인 경우, 자동으로 close() 메서드를 호출하여 리소스를 닫고 기본 리소스를 해제한다. close 메서드 구현시 구체적인 exception 을 throw 하고, close 동작이 전혀 실패할 리가 없을 때는 exception 을 던지지 않도록 구현하는 것을 강력히 권고한다. close 메서드에서 InterruptedException 을 던지지 않는 것을 강하게 권고한다. docs.oracle.com/javase/7/docs/api/java/lang/AutoCl..
jar, class 파일 확인하기 이클립스 plugins 경로에 다운로드 (D:\riley.j.lee\Tools\eclipse-jee-photon-R-win32-x86_64\eclipse\plugins) http://sourceforge.net/projects/jadclipse/ jadClipse 다운로드 이클립스를 재실행 후 경로 지정 http://varaneckas.com/jad/ 이클립스 Window 메뉴->Preferences -> General -> Editors -> File Associations의 *class 과 *class without source를 JarClipse 로 변경, default로 셋팅
make DI Framework by reflection 나만의 DI 프레임워크 만들기 @Inject 라는 애노테이션 만들어서 필드 주입 해주는 컨테이너 서비스 만들기 @Retention(RetentionPolicy.RUNTIME) public @interface Inject { } BookService.java public class BookService { @Inject public Object bookRepository; } ContainerService.java public class ContainerService { public static T getObject (Class classType) { T instance = createInstance(classType); Arrays.stream( classType.getDeclaredFields() )...
Reflection https://asfirstalways.tistory.com/221 스프링의 Depedency Injection은 어떻게 동작할까? BookService.java @Service public class BookService { @Autowired BookRepository bookRepository; } bookRepository 인스턴스는 어떻게 null이 아닌걸까? 스프링은 어떻게 BookService 인스턴스에 BookRepository 인스턴스를 넣어준 것일까? 리플렉션 API 1 클래스 정보 조회 리플렉션의 시작은 Class https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html Class에 접근하는 방법 모든 클래스를 로딩 한 다음 Cl..
byte code 조작 아무것도 없는 Box에서 “Icecream”을 꺼내기 바이트코드 조작 라이브러리 ASM: https://asm.ow2.io/ 어려움.. Javassist: https://www.javassist.org/ 조금 덜 어려움.. ByteBuddy: https://bytebuddy.net/#/ ByteBuddy maven dependency 추가 net.bytebuddy byte-buddy 1.10.1 Box.java public class Box { public String pullOut() { return ""; } } App.java public class App { public static void main( String[] args ) { //try { //new ByteBuddy() //.redefi..

반응형