Java의 메모리 관리 - Weak, Soft, Phantom reference 예제 Weak reference와 soft reference는 그래도 뒤져보면 예제가 좀 있습니다.하지만 정말 rare하게 쓰이는 phantom reference에 대한 예제는 구글링을 해도 찾기가 쉽지 않습니다.다행이 아래 깔끔한 예제를 찾았기에 링크 해 봅니다.원문은 아래 링크에서 확인하실 수 있습니다.http://neverfear.org/blog/view/150/Strong_Soft_Weak_and_Phantom_References_Java Strong References먼저 우리가 일반적으로 쓰고있는 Strong reference 입니다.이런식의 참조는 절대 GC가 되지 않습니다.package org.neverfear.leaks; /* * URL: http://neverfear.org/blog/view.. 개발이야기/Java 7년 전
Weak reference의 이해 Weak reference (약한 참조)대한 글을 시작해 보려고 합니다.먼저 자바(JVM)의 메모리를 구조를 이해해야 weak reference, soft reference, phantom reference를 보다 잘 이해 할 수 있습니다.JVM에서 자바의 메모리가 어떤 구조를 갖는지는 다음번에 잘 정리해서 올리도록 하겠습니다. 예전에 제가 찾았던 weak reference에 대한 잘 정리된 글을 단순?? 번역해서 올립니다. Strong referencesFirst I need to start with a refresher on strong references. A strong reference is an ordinary Java reference, the kind you use every day. Fo.. 개발이야기/Java 7년 전
람다의 내부동작 #1 람다의 내부자바의 lambda는 단순히 익명클래스로 치환되지 않습니다.bytecode를 확인하면 invokedynamic이란 opcode로 표현됩니다.이번 포스팅에서는 람다의 내부동작은 어떤지, 왜 익명클래스로 치환되지 않는지를 알아봅니다. 람다의 this 람다의 this와 익명클래스의 this는 어떻게 다를까요? 위 예제에서 같은 동작을 하는 Runnable interface를 하나는 익명클래스, 나머지 하나는 람다로 표현했습니다.마지막 check()함수는 this로 넘겨바든 객체가 Runnable인지를 확인하여 true/false를 반환합니다. 이 코드를 수행하고 나면 익명클래스는 true 람다는 false를 반환합니다.즉, 람다는 Runnable을 this로 갖는게 아니라 LambdaThis를 th.. 개발이야기/Java 8년 전