好书读后感

《深入理解Java虚拟机实践》之 自动内存管理机制(一)

2017-07-05  本文已影响0人  杨哲丶

续接上篇文章我们继续来品读下一章自定内存管理机制,我以前写博客的思路就是遵循一条线路,就是是什么?为什么?怎么办?然后总结,然后没有然后了。那么就按照这个套路来写这篇文章,如果没有看到第一章的可以看上一篇文章可以好好看一看Java虚拟机的发展历史。

遇到的问题是什么?

在使用Java的时候我们都会碰到这种内存溢出的问题,我们无从下手,因为Java的内存管理机制和C/C++的管理机制就不一样,C/C++就像一个独裁者一样,他可以控制内存的分配和释放,而Java是自己维护自己的内存,自己具有一个内存管理机制,所以我们碰到内存上的问题的时候,就无从下手了,所以我们就有必要了解一下JVM的内存管理机制了。

内存管理之机制->运行时区域

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(第2版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示:


java_mm001.jpg

上边的一段是摘抄的,我要是直接把书本的直接抄过来,那算神马读后感,神马总结?所以我需要加上我自己的理解,如果你想全文阅读这本书,也推荐你去阅读,我这里做一个总结性质的,把其中重要的地方列举出来,或者读过本篇文章后你再去阅读这本书能有另一番感受,我也是欣慰至极。

那我们继续介绍运行时区域的五个地方,因为就上一篇文章说的是一样,我们使用最广泛的就是Hot Spot VM,那我们就以这个虚拟机来说运行时区域的特点:

程序计数器

虚拟机栈

本地方法栈

Java堆

方法区

到这里我们就介绍结束了,你以为还有多少?逗你呢,我们在看看剩下作者介绍的两个运行时区域。

运行时常量池

直接内存

总结

到此为止我们分析完Java的运行时区域和直接内存,我们这里做一个总结。

上一篇下一篇

猜你喜欢

热点阅读