경제 위기에 대해서 뉴스가 나오는데, 정확하게 잘 모르는 분들을 위해서 나온 페이지다.

적절하게 American life의 예문을 들어서 정확하게 설명하고 있다.

경제 영어를 공부하거나 경제 기사나 뉴스를 보나가 막히면 그 배경에 대해서 나온 아래 페이지를 보면 된다..

 

http://baselinescenario.com/financial-crisis-for-beginners/

 

Posted by '김용환'
,

자바에서 클래스 메타 정보영역인 PermGen영역에서 OutOfMemoryError 가 나면..

보통 permgen 영역을 넓히면 된다.

 

해결 방법을 소개한다.

1. MaxPermSize을 늘린다.

-XX:MaxPermSize=256m 옵션을 실행할떄 추가한다. 보통 이정도면 꽤 많이 쓰는 것이다. 톰캣이라면, catalina.sh에 추가하면 된다.

 

 

만약 ConcurrentMarkSweep (CmS)  GC를 할 때면, 아래 옵션을 추가해야 한다.. CMS GC때는 반드시 permgen 영역을 gc하지 않는다. 따라서 추가하는 것이 많다. 아무 때나 추가하는 것이 절대 아니다.

 

2. CMSPermGenSweepingEnabled , CMSClassUnloadingEnabled 를 추가한다.

-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled 옵션을 추가한다.

중요한 것은 ParreleGC

 

'java core' 카테고리의 다른 글

svn과 연동 (svnkit)  (0) 2009.03.25
exception시 어떻게 되는가?  (0) 2009.03.05
Generic Erasure  (0) 2009.02.24
Java Profiling API 공부 시작..  (0) 2009.02.20
아파치 세션이 계속 있다??  (0) 2009.02.20
Posted by '김용환'
,

 

http://www.valuestar.co.kr 에 올라온 오셀로님의 글을 퍼왔습니다.

한경에서 좋은 기사가 있어서~

 

한경에서 시리즈로 올라 온 기사를 링크 합니다.

(이름 부분을 클릭하면 해당 내용으로 이동합니다)

(1) 벤자민 그레이엄  ['09-01-28] 
(2)
로저스  ['09-02-01] 
(3)
필립피셔  ['09-02-08]       
(4)
마틴 즈웨이그 ['09-02-15]
(5)
피터 린치  ['09-02-22]   

 

 

 

Posted by '김용환'
,

 

http://ko.wikipedia.org/wiki/%ED%83%88%EB%A6%AC%EB%8F%84%EB%A7%88%EC%9D%B4%EB%93%9C

 

임산부의 입덧을 없애준다는 신약이 있었다고 한다. 하지만 개를 가지고 임상실험을 하고 테스트한 결과로 바로 판매를 했는데.. 이게 사람 몸에 안맞았고 수많은 기형아를 출산했다고 한다.

흘...

'scribbling' 카테고리의 다른 글

괜찮은 오픈 소스 메신저 프레임워크  (0) 2009.03.18
잡 인터뷰를 하는 이유. - 퀴즈  (0) 2009.03.18
강동구 송파구 일대 집수리 추천  (0) 2008.10.12
차예 그리고 커피  (0) 2008.08.26
창의력  (0) 2008.05.29
Posted by '김용환'
,

Generic Erasure

java core 2009. 2. 24. 03:19

jdk5 부터 지원되는 generic을 컴파일하고 ,jad로 역컴파일하면, generic 코드부분은 완젼 사라져 있다.

이것을 erasure 라고 한다.

자바가 erasure라는 것을 사용하는 것은 바로 java runtime 환경에 backwards compatibility  때문이다. generic이 생기전에 먼저 jvm이 생겼음을 생각해 보자.

 

이런 generic을 왜 지원하게 될까? 그것은 runtime때 일어나는 부주의한 실수조차 없게 하기 위함이다. 하지만, 이렇게 자주 사용하게 되면, 반발이 많이 일어날 수 있다. 불필요한 수준의 타입 명시로 인해서 개발비용은 늘어날 수도 있다.

 

아마도 이 만든 사람은 Static Typed language를 지원함으로서, classcasetexception이 일어나지 않도록 도와주려고 한거 같은데. 그 마음 누가 알랴?

 

 

 

참조

http://www.mindview.net/WebLog/log-0060

http://lastmind.net/blog/2007/01/effective-java-reloaded.html

 

 

'java core' 카테고리의 다른 글

exception시 어떻게 되는가?  (0) 2009.03.05
PermGen에서의 OutOfMemoryError 발생 대처하기  (0) 2009.02.25
Java Profiling API 공부 시작..  (0) 2009.02.20
아파치 세션이 계속 있다??  (0) 2009.02.20
jstack  (0) 2009.02.20
Posted by '김용환'
,

 

요즘 아일랜드의 CDS 스프레드 때문에 시끌벅적하다. 이에 대한 경제 상황를 아래 싸이트에서 약간 엿볼 수 있다.

http://www.irisheconomy.ie/

 

 

Posted by '김용환'
,

 

요즘 미 연방 준비 위원회가 미국의 중산층 가계에 대한 재정상태에 대해서 발표한 것이다.

중산층 소득이 점점 줄어들고 있다는 것이다.

 

2007년에 비해 2008년 10월에는 순이익이 17.8%정도의 손해가 있었다고 한다.그래서 순이익이 줄어들었고, 1998년도로 되돌아갔다고 발표하고 있다.

또한 손실까지 깊숙히 떨어지고 있었다고 발표하고 있다...

 

아래의 표를 보면, Income은 비슷하지만, 전체 자산이 주식이나 부동산의 영향으로 줄어들었고, 유동부채는 크게 늘어서 중산층 가계의 순이익이 줄어들고 있는 실정이다..

 

2004

2007

2009

Income

47,500

47,300

47,300

Assets

Bank accounts

3,300

2,700

2,700

Retirement savings

19,000

23,900

17,900

Vehicles

14,400

14,600

14,600

Primary residence

148,300

150,000

125,400

Total assets

185,000

191,200

160,600

Liabilities

Mortgage on primary residence

84,800

88,700

88,700

Installment loans

11,800

12,800

12,800

Credit cards

2,400

2,400

2,400

Total liabilities

99,000

103,900

103,900

Net worth

86,000

87,300

56,700

 

 

참조 :

http://www.federalreserve.gov/pubs/bulletin/2009/pdf/scf09.pdf

 

 

Posted by '김용환'
,

http://www.christianpost.com/church/Megachurches/2008/09/osteen-arms-thousands-with-hope-not-doctrine-07/index.html

 

조엘 오스틴에 대한 여론이 많다.  그의 설교 스타일은 독특하다.

그에 대한 기사가 있어서 소개하고자 한다.

 

최근에 낸 책 Become a Better you 에서 나온 것처럼 그의 부르심은 사람들의 마음에 희망의 싹을 심는 것이다. 부르심이란 각자에게 있고, 그 것을 향해 달려가는 데, 종교적 편견에 따라서 각자 믿음의 편견에 따라서 판단하지 않았으면 좋겠다 하는 생각이 든다.

 

부르심에 대해서 왜 이런 부분은 없느냐, 왜 너는 이상하냐 라는 것은 어쩌면 우리의 편견이 나타나는 것이 아닐까? 하나님의 모든 모습을 우리가 다 얘기할 수 없고, 겨우 몇 부분만 알 뿐 인데, 그의 부르심은 그것일 뿐이다. 그는 그저 그 부르심을 받는 데로 갈 뿐이다.

 

존 밀의 자유론에는 종교적 편견을 가진 사람들이 위험하다고 했다. 즉, 종교를 가지지 않은 사람보다 종교를 가진 사람들이 편견을 가지고 다른 사람의 자유를 침해한다고 했다.

이 부분에 대해서 깊이 생각해 볼 필요가 있다.

예수님이 죽으신 이유는 당시 유대인이 알던 하나님에 대해서 하나님을 모욕했다라는 죄목임을 잊지 말아야 할 것이다.

 

누구나 사람은 자기의 신앙의 잣대, 양심의 잣대, 도덕의 잣대를 들이대고, 상대방에 대해서 왜 그러하지 않는지, 왜 저렇게 행동하고 말하는지에 대해서 판단하고,상처를 준다.

제일 중요한 것은 부르심을 따라 행동하는 것이 더 중요한 데 말이다.

 

희망의 싹을 주는 사람에게 그렇게 이상하다고 말하는데, 왜 수만명의 사람들이 와서 조엘 오스틴의 설교를 들을 까 생각했다. 조이스 마이스와 같이 하나님의 속성에 대해서 영적전쟁, 치유, 중보기도에 대해서 설교하시는 분과 달리 초급적인 신앙에 대해서 설교하는 데 수많은 사람들이 시간을 내어, 돈을 주고 설교를 들을까 하는 생각이 들었다.

 

즉, 단순한 것에 대한 소망이 아닌가 싶다. 하나님이 살아계시는데, 나의 감정, 나의 이성은 끌리지 못함이다. 바로 이것에 대한 첫번째 소망이 아닌가 싶다. 나의 나됨부터 가장 먼저 만져지고, 하나님과의 깊은 친밀감이 없는데, 교리와 사도바울의 교회론 기도론이 먹혀들지 않을 수 있음을 말하고 싶다.

 

누구나 사람에게는 필요가 있다. 그 필요를 채워주는데, 그것이 하늘로부터 내려온 것이 아니면, 분명 그것은 문제가 있다. 하지만 부르심을 가지고 그 부르심으로 사람들의 필요를 채워주는 것은 나는 하나님의 영이 함께 함을 느낄 수 있다고 말할 것 같다.

 

비록 그가 영적 전쟁, 중보기도, 예배에 대해서 깊숙히 말하지는 않지만, 그는 희망과 복음과 하나님의 선하심이 그들안에 있고 하나님과 친밀함을 강조하지 않는가??

나를 향해서 말하는 것 같고, 나에 대한 하나님의 계획을 먼저 얘기하면서 그들의 첫번째 사귐, 하나님과의 깊은 친밀감을 강조하는 것은 나쁘지 않다고 생각한다.

 

그 이후의 판단은 성도들이 하는 것이다. 좀 더 깊숙히 들어가려면, 신앙인으로서 판단을 하고 거기에 맞는 훈련을 찾아가면 되는 것이라 생각한다.

 

상대방을 비판하고 시험하기 보다는 그저 부르심을 인정하고 먼저 자신을 모습을 돌이켜보고 자신의 편견부터 제거하는 것이 좋을 것이다.

 

마지막으로 그의 글귀를 적는다..

 

"I'm called to plant a seed of hope in people's hearts," as he wrote in his latest book, Become a Better You.

 

Posted by '김용환'
,

리눅스에서 메모리를 잡아먹고 싶은 녀석을 찾고 싶다면.. 어떻게 할 것인가??

 

바로. top 명령어를 이용하면 된다. % 까지 나온다.

sar -r 1 1000, free 명령어를 이용하여 캐쉬/버퍼 메모리를 확인한다.

 

하지만, 좀 더 구체적으로 알고 싶다면.

ps -auxf 를 사용한다.

 

RSS, VSZ를 확인한다.

VSZ : 현재 사용중인 가상메모리 또는 페이지.

RSS : 현재 사용중인 Real 메모리

 

그래도. 메모리가.. 계속 먼가가 잡고 있는데. 이상하다 싶으면. X를 확인하라.

리눅스 운영체제의 GUI는 50%는 잡느다.ㅡ.ㅡ;;

 

init[5]로 되어 있는지, /etc/inittab 의 initdefault가 5인지도 확인할껏..

 

개발자로 들어왔는데.. ....

개발 시간이 줄어들고 있다..

Posted by '김용환'
,

자바 프로파일링 api를 이용해서 자바에서 정보를 꺼집어오는 일을 할 것 같다..

흐흐~~ 공부 시작~

 

출처 : http://zeous.egloos.com/tag/java/page/1

 

3. ASM

3.1 정보를 수집&분석하는 Tool 이다.
3.2 BCI의 API 를 이용해서 가장 low 레벨로 컨트롤하는 방법임
3.3 HPRof가 모든 class에 대한 분석임에 반해 이 방법은 특정 클래스에 대한 action을 원하는 형태로 지정(코딩)할수 있다.
3.4 장단점
    - 특정 class에 대한 컨트롤이 가능하다(예, connection 연결이 몇번 호출되었는지 카운트가능)
    - 자유도가 높은 만큼 처음부터 코딩해야 한다.
3.5 참고자료
    - http://somnusong.tistory.com/275
    - http://asm.objectweb.org/index.html

 

 

출처

http://openframework.or.kr/Wiki.jsp?page=JvmtiNjvmpi

 

 

Java Profiling API

 

 

http://j2eearchitect.net/viewtopic.php?t=1322

Java Profiling API란 무엇인가?

보통 프로파일러라고 함은 애플리케이션의 문제를 진단하고 성능을 측정하기 위해서 사용하는 도구를 의미합니다.

자바에서는 Profiling API를 통해서 애플리케이션의 다양한 정보를 프로파일링할 수 있습니다.

그렇게 하기 위해서는 어떻게 해서든지 간에 JVM의 정보를 가지고 와야 합니다. 보통 JVM의 정보를 실시간으로 가져오기 위해서 자바에서 제공하는 특별한 API를 이용하여 JVM과 통신을 시도하고 콘솔은 원격 JVM과 통신을 통해서 프로파일링 정보를 가지고 오게 됩니다.

Java Profiling API란 프로파일러와 JVM 간의 통신을 수행하고 프로파일링 정보를 가져올 수 있게 하는 Sun에서 규정한 API입니다.

이러한 API는 JVMPI와 JVMTI가 있습니다. 실제로 비슷해 보이지만 동작하는 구조와 그 특성은 서로 상이합니다.

JVMPI for Java 1.3, 1.4

JVMPI(http://java.sun.com/j2se/1.5.0/docs/guide/jvmpi/index.html)는 원래 클래식 자바 가상 머신에서 잘 동작하도록 설계되어 있기 때문에 현대적인 JVM에서는 잘 어울리지 않습니다. 예를 들면 Java 1.4가 되겠습니다.

최신의 JVM은 바이트 코드를 동적으로 최적화 하는 기능이 들어 있는데 JVMPI는 성능 정보를 수집하기 위해서 이벤트를 이용합니다.

이 이벤트가 많은 문제를 발생시키는데 대표적으로 GC를 제대로 동작하지 못하게 하는 문제점입니다. 또 다른 문제는 JVMPI가 큰 크기의 힙 메모리를 제대로 프로파일링 하지 못한다는 점입니다.

Sun에서 JVMPI를 "실험적"이라고 밝히고 있기 때문에 JVMPI는 사실 완전한 표준이 되기 어렵다고 봅니다. 하지만 실제로 마치 표준처럼 사용하고 있습니다.

JVMPI는 Java 1.3, Java 1.4에서 사용가능한 프로파일링 인터페이스이기 때문에 Java 5에서는 호환성의 이유로 JVMPI를 지원합니다. 하지만 Java 6에서는 더이상 JVMPI를 지원하지 않습니다.

일반적으로 JVMPI를 구동하려면 JVM을 구동할 때 JVM 입력 인자로 -Xrun... 을 이용합니다. 예를 들면 JProfiler는 다음과 같은 인자를 이용합니다.

코드:

#java -Xrunjprofiler FooClass

-Xrun 인자는 JVMPI를 구동하라는 의미로써 "-Xrun"을 제외한 "jprofiler"에 대해서 JVMPI를 이용하여 JVM과 통신할 네이티브 코드 파일을 의미합니다.

즉, Windows에서는 jprofiler.dll, Linux에서는 jprofiler.so, HPUX에서는 jprofiler.sl을 로딩하려고 시도합니다.

새로운 JVMTI for Java 5 이상

JVMPI의 이벤트 기반 모델 대신, JVMTI(http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/index.html)는 이른바 "bytecode instrumentation"이라는 방법을 사용합니다.

"bytecode instrumentation"이란 애플리케이션을 프로파일링 하기 위해서 프로파일링할 애플리케이션의 바이트 코드를 변경한다는 의미입니다.

즉, 모니터링 하고자 하는 바이트 코드의 정확한 위치에 프로파일링 코드를 추가함으로써 프로파일링을 수행합니다.

그러므로 이론적으로 이러한 접근은 더욱더 perspective하지만 Java 5에서 JVMTI의 구현은 여러 가지 문제가 있습니다(물론 이 문제는 Java 6에서 해결되었습니다).

-XX:+UseConcMarkSweepGC, -Xincgc 옵션을 이용한 parallel garbage collector을 지원하지 않는데 JVMPI 또한 이러한 제한이 있습니다.

그러므로 메모리 스냅샷을 생성했을 때 정확한 배열의 길이를 가져올 빠른 방법이 없습니다. 또한 여러 가지 성능 문제도 있습니다.

JVMTI는 JVMPI와 다르게 구동하는 JVM 입력 인자가 다릅니다. 예를 들어 YourKit Java Profiler의 경우 JVMTI를 활성화 시키기 위해서 다음과 같이 입력 인자를 사용해야 합니다.

코드:

#java -agentlib:yjpagent FooClass

Java 버전별 프로파일링 API 지원

* JVMPI : Java 1.3, Java 1.4 * JVMTI : Java 1.5 (강력 권장), Java 1.

 

'java core' 카테고리의 다른 글

PermGen에서의 OutOfMemoryError 발생 대처하기  (0) 2009.02.25
Generic Erasure  (0) 2009.02.24
아파치 세션이 계속 있다??  (0) 2009.02.20
jstack  (0) 2009.02.20
톰캣-이클립스 리모트 디버깅 하기  (0) 2009.02.19
Posted by '김용환'
,