Java Archive

Java GC의 또 다른 문제 swap

neptune에 multi-row selection 기능(like, between) 을  구현하고 테스트 하는 중에 계속 GC로 인해 10 ~ 30초 정도 시스템이 멎는 증상이 발생하였습니다. 지난번부터 계속 GC가 문제를 일으키고 있는데 UseConcMarkSweepGC 옵션으로 해결된 것 같은 문제가 다시 재현되었습니다. 일주일 삽질 끝에 발견한 것은 테스트 하는 장비의 환경이 바뀌어서 물리적인 메모리가 작아졌기 때문이었습니다. 메모리가 모자라서 GC가 오래 걸렸다라기 보다는

RESTful 웹 서비스란?

RESTful 웹 서비스라는 것이 단순히 HTTP로 request를 받아서 결과를 XML 형태로 전송해주는 것이라고만 생각했는데 관련 문서를 찾아보니 잘못 생각하고 있었네요. REST와 관련하여 몇가지 개념이 있는데 제가 알고 있는 개념인 HTTP를 이용하고 query string에 처리할 action에 대한 정보 등을 포함하는 방식을 REST-RPC 개념으로 설명하면서 진정한 의미의 REST한 서비스는 아니라고 합니다. REST는 REpresentational State Transfer의 약자입니다.이론적 배경은

JVM 옵션

JVM의 GC 관련 옵션을 찾는 중에 다음 URL을 발견하였는데 http://wiki.ex-em.com/index.php/JVM_Options http://ukja.tistory.com/51 http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html 1.3 정도에서 JVM 파라미터로 튜닝하던 때에 옵션에 대해서 공부하다가 지금 보니까 엄청나게 많아지고 다양한 정보를 설정할 수 있게 되어 있네요…

NegativeArraySizeException 관련

분산/병렬 프로그램 만들다 보니 전혀 재현 불가능한 에러도 발생합니다. 오늘 발생한 에러는 거의 재현하기 불가능할 것 같습니다. 코드는 다음과 같습니다. class Test {    TreeSet<String> values = new TreeSet<String>();          //이부분이 Multi client로부터 접속되는 코드     public void exec() {        values.add(…);        …        //다양한 조건을

자바에서 byte[] memory usage

어제 포스팅한 자바 메모리 관련해서 계속 프로파일링 도중에 다음과 같은 아주 심플한 코드들 JProfiler를 이용하여 프로파일링을 해 봤습니다. 길이 10의 byte를 10,000개 만들 경우 실제 데이터의 메모리는 100,000 byte가 됩니다. 하지만 프로파일러에는 234KB가 10,0001개 생성되었고 234KB 할당 되어 있다고 나옵니다.     List<byte> values =  new ArrayList<byte>();        byte aaa = new byte[10];