《深入理解java虚拟机》-第2章

来源:互联网 发布:pageoffice java word 编辑:程序博客网 时间:2024/05/16 17:08

第2章 Java内存区域与内存溢出异常


2.1 概述

2.2 运行时数据区域

2.2.1 程序计数器

2.2.2 java虚拟机栈

2.2.3 本地方法栈

2.2.4 Java堆

2.2.5 方法区

2.2.6 运行时常量池

2.2.7 直接内存

2.3 HotSpot虚拟机对象探秘

探讨HotSpot虚拟机在java堆中对象分配、布局和访问的全过程。

2.3.1 对象的创建

2.3.2 对象的内存布局

2.3.3 对象的访问定位

2.4 实战:OutOfMemoryError异常

2.4.1 Java堆溢出

Java堆内存的OOM异常是实际开发中常见的内存溢出异常情况。当出现Java堆内存溢出时,异常堆栈信息"java.lang.OutOfMemoryError"会跟着进一步提示"Java heap space"。

2.4.2 虚拟机栈和本地方法栈溢出

HotSpot虚拟机中并不区分虚拟机栈和本地方法栈。
如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常。
如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。

2.4.3 方法区和运行时常量池溢出

String.intern()是一个Native方法,它的作用是:如果字符串常量池中已经包含一个等于此String对象的字符串,则返回代表池中这个字符串的String对象;否则,将此String对象包含的字符串添加到常量池中,并且返回此String对象的引用。

2.4.4 本机直接内存溢出

2.5 本章小结


阅读全文
0 0
原创粉丝点击