又踩到一个坑——JAVA虚拟机最大内存
飘过的小牛 2013-12-11 09:13:40 最近一直在优化项目,然后想把一个查询频繁的表加载到内存中建立一个HashMap结构,然后tomcat各种listenstart报错,我因为也不太懂JAVA,吭哧吭哧搜了一下午也没搞定。。。
然后问了组里经验丰富的人,说可能是加载的内存过大。然后我一看,我去,这个小破表竟然占了6G。。然后我加了一些筛选条件,大概4G的样子。
然后按网上说的把tomcat的Xmx搞到4500m。。。。然后满怀希望启动,一看日志,我去,超出限制了。百思不得其解啊,又去问人家。人家回来让看看机器是多少位的,说32位的JAVA虚拟机最大内存好像只能开到2G左右。64G可以很大。然后我一看,果然是32位的。。。。
然后我就没有办法了。。。各位,谁能给我解释一下tomcat为啥根据32位、64位限制JAVA虚拟机的大小。机器有12G内存,空闲有10G。。。但是竟然不支持。真是郁闷的不行,然后用servlet访问一个接口,就报NullPointerException,我估计是因为数据没加载到内存,这个接口一查发现数据是空的,然后就扔过来一个异常。(这是我猜的,希望你能根据经验给我判断一下。。)
谢谢各位了。。谁能给点建议更好,明天跟mentor商量一下,换个64的机器来搞~~