在Java应用开发过程中碰到的内存溢出一般就是两类:
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: PermGen space
为了解决这两类问题,那么了解一下JVM的内存模型就很有必要了,在Java堆中粗略的可以分为两部分,一个是permanent generation space,从它的字面意思理解可以认为是用作存放一些不会变化,或者变化不大的数据,这里主要就是存放对象和方法,这是JVM自身需要操作用的存储空间;另一部分heap space就是留给我们应用程序的空间了,这里存放我们对象的instance。合理的设置这些参数不但可以避免上述错误的发生,还可以优化应用程序。至于如何优化程序,提高系统性能,这可不是三言两语道得明了,还得实践里面出真知 :idea:
可以通过调整下列四个参数大下解决上述问题
-Xms??M -Xmx??M -XX:MaxNewSize=??M -XX:MaxPermSize=??M
查看JVM最大可用内存可以输入下列命令知晓
java -Xmx??M -version
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: PermGen space
为了解决这两类问题,那么了解一下JVM的内存模型就很有必要了,在Java堆中粗略的可以分为两部分,一个是permanent generation space,从它的字面意思理解可以认为是用作存放一些不会变化,或者变化不大的数据,这里主要就是存放对象和方法,这是JVM自身需要操作用的存储空间;另一部分heap space就是留给我们应用程序的空间了,这里存放我们对象的instance。合理的设置这些参数不但可以避免上述错误的发生,还可以优化应用程序。至于如何优化程序,提高系统性能,这可不是三言两语道得明了,还得实践里面出真知 :idea:
可以通过调整下列四个参数大下解决上述问题
-Xms??M -Xmx??M -XX:MaxNewSize=??M -XX:MaxPermSize=??M
查看JVM最大可用内存可以输入下列命令知晓
java -Xmx??M -version