所谓内存模型:
是否知道java的内存画风
是否知道调整内存的方法
GC的解释操作
如果要说到内存,最直观的理解就是单例对象Runtime类。
Runtime run = Runtime.gerRuntime();
实际上,再java里面如果想进行内存的变更,就需要掌握一些内存的结构:
1.伊甸园区:新生的对象都保存再此处,但是不代表新生的对象会一直存活
。此处也属于内存空间,那么既然是内存空间一定会被沾满,如果占满了,那么就会执行GC处理
2.旧生代区:如果某些对象发现期要一直使用,那么就进入到旧时代区,这属于二级回收保险
。如果是先执行GC,那么先清理伊甸园区,随后如果发现空间不足,继续清理旧生代区。
3.永久区:永久区总的数据不会清除,即使程序出现了“OutofMemory”也不会清除。在java8中移除,改为元空间。
如何调整:
-Xms2048M-Xmx2048M-Xmn1024M
。初始分配的内存大小,默认为物理内存的1/64,但是小于1G
。最大分配内存,默认大小是物理内存的1/4,但是小于1G
。设置伊甸园区的堆的大小。
只有调整之后才可以保证系统内存会得到提升,这样很明显。