본문 바로가기

jvm

Java의 바이트코드 실행 방식 자바 바이트코드는 기계가 바로 실행할 수 있는 언어보다는 비교적 인간이 보기 편한 형태로 기술됐다. 그래서 실행 엔진은 이와 같은 바이트코드를 실제로 JVM 내부에서 기계가 바로 실행할 수 있는 형태로 변경한다. - 인터프리터 : 바이트코드 명령어를 하나씩 읽어서 해석하고 실행한다. 하나하나의 해석은 빠른 대신 인터프리팅 결과의 실행은 느리다는 단점이 있다. 즉, 바이트코드라는 '언어'는 기본적으로 인터프리터 방식으로 동작한다. - JIT(just-in-time) 컴파일러 : 인터프리터의 단점을 보완하기 위해 도입된 것이 JIT 컴파일러다. 인터프리터 방식으로 실행하다가 적절한 시점에 바이트코드 전체를 네이티브 코드로 변경하고, 이후에는 해당 메서드를 네이티브 코드로 직접 실행하는 방식이다. 네이티브 코.. 더보기
[Scala] Explicitly Typed Self References 자기 자신을 다른 Type으로 선언이 가능하다. 예시를 보자 Graph라는 클래스와 abstract class Graph { type Edge type Node def connectWith(node: Node): Edge = { val edge = newEdge(this, node) // now legal edges = edge :: edges edge } } ...} 더보기
[Scala] Lower Type Bounds 아래의 예시를 보면 LinkedList를 구현하였다. 하지만 ListNode[String]이라고 선언하면 ListNode[Object]를 사용할 수 없게 되는 상황이 나온다. case class ListNode[T](h: T, t: ListNode[T]) { def head: T = h def tail: ListNode[T] = t def prepend(elem: T): ListNode[T] = ListNode(elem, this)} 조금 더 규칙을 허술하게 하고 싶을때 ?? 사용하면 좋다. prepend 함수에 [U >: T] 라고 해주면 case class ListNode[+T](h: T, t: ListNode[T]) { def head: T = h def tail: ListNode[T] = t de.. 더보기
[Scala] Upper Type Bounds 스칼라는 추상타입의 경계를 조정? 이 가능하다. 예시로 보자 아래의 코드를 보면 T 더보기
Tomcat7 에서 Memory Setting 하기 1. /etc/tomcat7 이동한다. (또는 /usr/share/tomcat7 여기로 이동하여 목록을 확인하여)drwxr-xr-x 2 root root 4096 Sep 12 03:53 binlrwxrwxrwx 1 root tomcat 12 Sep 12 03:53 conf -> /etc/tomcat7lrwxrwxrwx 1 root tomcat 23 Sep 12 03:53 lib -> /usr/share/java/tomcat7lrwxrwxrwx 1 root tomcat 16 Sep 12 03:53 logs -> /var/log/tomcat7lrwxrwxrwx 1 root tomcat 23 Sep 12 03:53 temp -> /var/cache/tomcat7/templrwxrwxrwx 1 root tomc.. 더보기