
JVM学习笔记
文章平均质量分 78
wapw
我就是我。
展开
-
2、Java堆内存/方法区(Non-Heap)
Java堆内存内存的划分 新生代(Young)、老年代(Old/Tenured Gen) 新生代划分:Eden(伊甸园:代指新生变量)、From Survivor 、To Survivor 图中 Young Gen与Tenured Gen属于堆区,而Permanent Gen(永久代)不属于堆区 新生代:存放新生成的对象(说明:from和to每次只有一个原创 2017-06-22 13:46:15 · 4035 阅读 · 0 评论 -
1、Java内存区域
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。Java运行时数据区1. 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概原创 2017-06-21 20:02:23 · 303 阅读 · 0 评论 -
4、Java 对象底层
Java对象创建对象创建一共有四种方法(持续更新……)使用New关键字创建对象 创建过程 从堆中划分内存的不同情况 内存分配完成后,虚拟机会将分配到的内存空间都初始化为0(不包括对象头),这保证了对象实例字段在Java代码中不初始化就可以直接使用。 接下来,执行< init>方法,使对象按照程序员的意愿进行初始化。 对象内存布局 在HotSpo原创 2017-06-22 17:04:58 · 490 阅读 · 0 评论 -
3、Java GC机制
标记-清理算法 标记清除算法主要分为两个阶段:标记、清除 首先标记需要被清除对象,标记完成后统一清除这些对象 缺点:标记清除效率不高;产生大量碎片 复制算法 它将可用内存容量划分为大小相等的两块,每次只使用其中的一块。当这一块用完之后,就将还存活的对象复制到另外一块上面,然后在把已使用过的内存空间一次理掉。这样使得每次都是对其中的一块进行内存回收,不会产生碎片等情况,只要移原创 2017-06-22 14:15:05 · 255 阅读 · 0 评论 -
JVM内存区域异常实战
内存中可能出现的异常 异常点 StackOverflowError OutOfMemoryError PC – – VM Stack 请求栈深度过大 可动态扩展栈情况下,无法申请足够的内存 Native MethodStack 同上 同上 Heap – 创建对象时无法申请足够的内存 Method Area – 无法满足原创 2017-07-14 20:08:19 · 391 阅读 · 0 评论