堆内存溢出:
堆的最小值:-Xms
堆的最大值:-Xmx
堆的最大值参数-Xmx与最小值参数-Xms设置为一样即可避免自动扩展
堆内存异常时dump出堆转储快照:-XX:+HeapDumpOnOutOfMemoryError
堆内存异常处理:首先判断是内存溢出还是内存泄露。如果是内存泄露,通过工具查看泄露对象到GC Roots的引用链,找到泄露对象,查看为什么不能被垃圾收集器回收,定位泄露代码的位置。如果不存在内存泄露,那就是内存中的对象都必须存活着,应该检查虚拟机参数,是否应该将堆内存调到更大,或者从代码上优化,审查是否存在对象过多或生命周期过长的问题,以减少程序运行的内存消耗。
栈内存溢出:
由于HotSpot虚拟机不区分虚拟机栈和本地方法栈,所以对于HotSpot虚拟机而言,-Xoss参数是无效的,栈容量只由-Xss确定。
栈内存可能抛出的异常:1.线程请求的栈深度大于虚拟机允许的最大深度,抛出StackOverflowError异常;
2.虚拟机在扩展栈时无法申请到足够的内存空间,抛出OurOfMemoryError异常。
在单线程操作中:1.使用-Xss减小栈内存容量,抛出StackOverflowError,异常出现时,输出的栈深度相应缩小&