-
方法区配置
-
JDK1.6 , JDK1.7配置永久区大小:
- -XX:PermSize:初始的永久区大小;
- -XX:MaxPermSize:最大永久区;
-
JDK1.8使用元数据区替代永久区:
- 默认情况下,元数据区只受系统可用内存的限制;
- -XX:MaxMetaspaceSize:用来指定永久区的最大可用值;
-
-
栈配置
- 栈是每个线程私有的内存空间;
- 在Java虚拟机中可以使用-Xss参数指定线程的栈大小;
-
直接内存配置
-
能力:直接内存跳过了Java堆,使Java程序可以直接访问原生堆空间;
- 能力特点:它从某种程度上加快了内存的访问速度,但不能武断的认为直接内存一定可以提高内存访问速度;
-
属性:
-
-XX:MaxDirectMemorySize:设置直接内存的最大可用空间。如果不配置,默认为最大堆空间,即-Xmx;
- 属性特点:当直接内存使用量达到该属性的最大值,即触发垃圾回收,如果垃圾回收不能释放足够空间,直接内存会引发系统的内存溢出异常;
-
- 优势:适合申请次数较少,访问较频繁的场景;
- 示例1:直接内存与堆内存的读写速度测试,直接内存完胜
-
public class AccessDirectBuffer { //直接内存读写测试 public void directAccess(){ long starttime = System.currentTimeMillis(); ByteBuffer b = ByteBuffer.allocateDirect(500); for ( |