Google App Engine for Java で使用できるメモリ量

Sen がうまく動かないので,実際どのくらいのメモリが使えるのかを調べてみた.具体的には,簡単な指定したメモリ量を確保するだけのサーブレットを書いて,手動2分法で限界点を探してみた.サーブレットはこんなだ.

public class memorytest_gaeServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws IOException {
    resp.setContentType("text/html");
    PrintWriter w = resp.getWriter();
    int v = Integer.parseInt(req.getParameter("input").trim());
    byte [] buf = new byte[v];		
    resp.sendRedirect("/index.html");
  }
}

いろいろやってみた結果,108000000byteと109000000byteの間のどこかに限界点があることがわかった.これ以上細かく調べる気力はない(し,意味も無い).要するに,100Mちょっとまでは大丈夫,ということ.

所感

100Mもあればたいていのアプリは動きそうなもんだが,Senはそんなにメモリを食っているのか.mmapするだけでもallocしたのと同じことになっちゃうのかな? 辞書ファイルの総計は,45Mぐらいなので,それでも何とかなりそうなものなんだけど.