2013-11-04

java.io.IOException: error=12, Cannot allocate memory? WTF?!

자바의 유서깊은(?) 골칫거리로, 자바에서 fork() + exec() 하는 방식에 문제가 있기 때문이다. (자세한 내용은 여기를 참고하면 좋다.) 위 링크에서 4가지 해결책이 나온다. 닥치고 메모리 증설 fork() 호출시 swapfile을 추가하도록 꼼수 사용 리눅스: sysctl의 vm.overcommit_memory 속성을 1로 설정 POSIX 호환 시스템: fork() + exec() 대신 posix_spawn() 사용하기 리눅스라면 vm.overcommit_memory=1 이 아무래도 빠르고 편하겠지만, 동작방식이 후덜덜하므로 overcommit이 일어날 때 커널에서 노는 메모리를 수거하는데, 이 때 어떠한 확인도 없이 막무가내로 수거하므로 잠자고 있는 멀쩡한 다른 프로세스의 메모리를 수거할...
Share:

2013-11-01

bash로 git의 빈 디렉토리 컨트롤하기

(2014-11-19: 좀 더 깔끔하게 수정) git의 유일한 단점은 빈 디렉토리를 관리 할 수 없다는 것이다. 따라서 빈 디렉토리를 강제로 관리하려면 대충 아무 파일이나 던져놓는 수 밖에 없다. MarkEmptyDirs라는 툴이 있기는 하지만, 깔기 귀찮다. 그냥 bash 있는거 쓰고 말지… 본문 find . -name ".emptydir" -delete; find -empty -type d | while read x; do touch "$x/.emptydir"; done 참 쉽죠? 주의: 이 스크립트에는 버그가 있지만 여백이 부족하므로 더 이상의 자세한 설명은 생략한다. 차마 귀찮아서라고는 못하겠다. 예제를 수정하면서 더이상은 naver! 해설 먼저 하위 디렉토리에서 .emptydir...
Share: