Java内存区域与内存溢出异常

Posted 寻觅beyond

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java内存区域与内存溢出异常相关的知识,希望对你有一定的参考价值。

1、运行时数据区域

  

 

  

2、JVM配置选项

  JVM配置参数有很多类,大致有-X、-XX类型的

$ java -X
    -Xmixed           混合模式执行 (默认)
    -Xint             仅解释模式执行
    -Xbootclasspath:<用 : 分隔的目录和 zip/jar 文件> 设置搜索路径以引导类和资源
    -Xbootclasspath/a:<用 : 分隔的目录和 zip/jar 文件> 附加在引导类路径末尾
    -Xbootclasspath/p:<用 : 分隔的目录和 zip/jar 文件> 置于引导类路径之前
    -Xdiag            显示附加诊断消息
    -Xnoclassgc       禁用类垃圾收集
    -Xincgc           启用增量垃圾收集
    -Xloggc:<file>    将 GC 状态记录在文件中 (带时间戳)
    -Xbatch           禁用后台编译
    -Xms<size>        设置初始 Java 堆大小
    -Xmx<size>        设置最大 Java 堆大小
    -Xss<size>        设置 Java 线程堆栈大小
    -Xprof            输出 cpu 配置文件数据
    -Xfuture          启用最严格的检查, 预期将来的默认值
    -Xrs              减少 Java/VM 对操作系统信号的使用 (请参阅文档)
    -Xcheck:jni       对 JNI 函数执行其他检查
    -Xshare:off       不尝试使用共享类数据
    -Xshare:auto      在可能的情况下使用共享类数据 (默认)
    -Xshare:on        要求使用共享类数据, 否则将失败。

  

  -Xms20m  设置Java堆内存的最大值为20m;

  -Xmx30m  设置Java堆内存的最小值为30m;

  -Xms和-Xmx设置相同值,可以避免堆自动扩展;

  -XX:+HeapDumpOnOutOfMemoryError  当让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便事后分析;

  -Xoss50m  设置本地方法栈的大小为50m;

  -Xss128k  设定虚拟机栈容量为128k;

  -XX:PermSize=10m -XX:MaxPermSize:20m 设定永久区(方法区、Non heap区)的容量以及最大容量;

  -XX:MaxDirectMemorySize=10m 设置本机直接内存的最大值为10m。

 

 

3、对象访问定位

  1、句柄方式

  2、直接指针访问

以上是关于Java内存区域与内存溢出异常的主要内容,如果未能解决你的问题,请参考以下文章

Java内存区域与内存溢出异常

JVM高级特性与实践:Java内存区域 与 内存溢出异常

Java内存区域与内存溢出异常

JVM-Java内存区域与内存溢出异常

JVM-Java内存区域与内存溢出异常

Java内存区域与内存溢出异常