深入理解java虚拟机学习 笔记 第二章 java 内存区域和内存溢出异常

时间:2021-12-31 11:51:44

2.2 运行时区域

     java虚拟机划分成若干个不同的数据区域,

    1.程序计数器,字节码解释器工作时就是通过改变计数器的值来取吓一跳需要执行的字节码命令

了解 String.intern()方法

作用: 如果字符串常量池中一个包含了一个等于此String对象的字符串,则返回代表池中的这个字符串的String对象,否则将此对象包含的字符串添加到常量池中,并返回此String对象的引用。

实战

将堆的最小值 -Xms参数与最大值-Xmx参数设置为一样即可避免堆自动扩展  通过参数 -XX:+HeapDumpOnOutOfMemoryError可以让虚拟机在出现内存溢出异常的时候Dump出当前内存堆转储快照以便事后进行分析

java 堆内存 OOM异常 是常见的, 会出现 java.lang.OutOfMemoryError: Java heap space   使用 eclipse memory analyzer 分析内存溢出

递归,容易出现 *Error 

方法区和运行时常量区测试思路:运行时候产生大量的类去填满方法区,直到溢出。  CGLib 创建类, 生成classcode 来搞   ,常见的还有  大量的JSP或者动态产生jSP文件应用

eclipse memory analyzer 使用

  1. 后面要了解的问题
    1. 了解 String.intern()方法
    2. eclipse memory analyzer 使用
    3. jdk和虚拟机的关系
    4. 如何查看gc日志