又踩到一个坑——JAVA虚拟机最大内存
然后问了组里经验丰富的人,说可能是加载的内存过大。然后我一看,我去,这个小破表竟然占了6G。。然后我加了一些筛选条件,大概4G的样子。
然后按网上说的把tomcat的Xmx搞到4500m。。。。然后满怀希望启动,一看日志,我去,超出限制了。百思不得其解啊,又去问人家。人家回来让看看机器是多少位的,说32位的JAVA虚拟机最大内存好像只能开到2G左右。64G可以很大。然后我一看,果然是32位的。。。。
然后我就没有办法了。。。各位,谁能给我解释一下tomcat为啥根据32位、64位限制JAVA虚拟机的大小。机器有12G内存,空闲有10G。。。但是竟然不支持。真是郁闷的不行,然后用servlet访问一个接口,就报NullPointerException,我估计是因为数据没加载到内存,这个接口一查发现数据是空的,然后就扔过来一个异常。(这是我猜的,希望你能根据经验给我判断一下。。)
谢谢各位了。。谁能给点建议更好,明天跟mentor商量一下,换个64的机器来搞~~
相关推荐
Java虚拟机内存优化实践
前面一篇文章介绍了Java虚拟机的体系结构和内存模型,既然提到内存,不得不说到内存泄露。众所周知,Java是从C++的基础上发展而来的,而C++程序的很大的一个问题是内存泄露难以解决,尽管Java的JVM有一套自己的垃圾回收机制来回收内存,在许多情况下并不需要java程序开发人员操太多的心,但也是存在泄露问题的,只是比C++小一点。比如说,程序中存在被引用但无用的对象:程序引用了该对象,但后续不会或者不能再使用它,那么它占用的内存空间浪费了。 我们先来看看GC是如何工作的:监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等,当该对象不再被引用时,释放对象(GC本文的重点,不做
Java虚拟机的内存区域划分
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分成很多个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。Java虚拟机规范中把Java虚拟机所管理的内存划分为以下几个区域。 一、程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,它的作用是当前所执行的字节码的行号指示器。它是线程私有的,即各个线程都有独立的程序计数器。 如果线程正在 执行一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在
java虚拟机创建失败的原因整理
在本篇文章里小编给大家整理了关于创建java虚拟机失败的解决方法和知识点,需要的朋友们可以参考学习下。
解决java虚拟机内存不足问题
解决java虚拟机内存不足问题,简单快捷
java虚拟机的内存结构
java虚拟机的内存结构,关于内存的相关介绍等,想要了解更多JVM的


Java SE
