Parece que o memory leak existente no util.concurrent tem atrapalhado bastante gente: aqui e aqui. Segundo o bug report, a Sun levou um belo tempo para corrigir parcialmente o problema e só pro Java6. Quem precisa de prova maior que programação com shared memory é uma empreitada fracassada?
Programação paralela com shared memory é muito dificil, vide a evidencia dada, e a enorme maioria dos desenvolvedores não consegue usar, quem dirá direito. Todo programa construído dessa forma tem no mínimo um race condition desastroso - escondido atras de outro um pouco menos. Não vejo como resolver isso sem mudar fundamentalmente o paradigma utilizado.
Quem acompanha este blog já imagina qual solução proponho - troca assíncrona de mensagens entre processos leves. Esse modelo é usado pela comunidade Erlang a mais de uma década com enorme sucesso. Se trata de um modelo simples, facíl de testar e depurar, concentra todo trabalho dificil em um único lugar - o runtime.
Está na hora desse problema ser resolvido, pois em questão de poucos anos nem mesmo nossas aplicações server-side estarão a salvo. Hoje todo AS atende a mais requisições simultâneas que o número de contextos do hardware, mas amanha com servidores suportando dúzias de cores com centenas de threads via SMT, isso deixa de ser a regra. Nesse ponto, seremos obrigados a paralelizar o processamento individual de cada requisição, coisa hoje que poucos estão aptos a fazer.
0 responses so far ↓
There are no comments yet...Kick things off by filling out the form below.
Leave a Comment