JVM笔记 | Java内存管理

  • 时间:
  • 浏览:1

老会 没有人把Java内存区分为堆内存和栈内存,你你是什么 分法比较粗糙。你你是什么 划分法律法律办法的流行不都可以说明大多数应用程序员最关注的、与对象内存分配关系最密切的内存区域是这两块。

Class文件中除了有类的版本、字段、法律法律办法、接口等描述信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这主次内容将在类加载后进入法律法律办法区的运行时常量池存放。

1. 应用程序计数器(Program Counter Register)

2. Java虚拟机栈(Java Virtual Machine Stacks)

3. 本地法律法律办法栈(Native Method Stack)

5. 法律法律办法区(Method Area)

4. Java堆(Java Heap)

Java堆是垃圾采集器管理的主要区域,但会 什么都有有事先也被称为“GC堆”(Garbage Collected Heap)。从内存回收深度图看,原困现在采集器基本都采用分代采集算法,什么都有有Java堆还可细分为新生代和老年代;从内存分配深度图看,Java堆原困划分出多个应用程序私有的分配缓冲区(TLAB),无论何如划分,都与存放内容无关,进一步划分的目的是为了更好地回收内存或更慢地分配内存。

Java与C++之间有一堵由内存动态分配和垃圾采集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。

                        《深入理解Java虚拟机》

下一篇:JVM笔记 | Java垃圾回收(GC)

Java虚拟机在执行Java应用程序的过程中会把它所管理的内存划分为若干个不同的数据区域,即运行时数据区。有有哪些区域都是所没有人的用途、以及创建和销毁的时间,有的区域随着虚拟机应用程序的启动而指在,有的区域依赖用户应用程序的启动和刚开始而建立和销毁。

对于习惯在HotSpot虚拟机上开发、部署应用程序的开发者来说,什么都有没有人更你会把法律法律办法区称为“永久代”,本质上两者并都是等价,仅仅是原困HotSpot虚拟机使用永久代来实现法律法律办法区,确实省去了专门为法律法律办法区编写内存管理代码的工作,但现在看来并都是有有有一个多 好主意,原困那我更容易遇到内存溢出现象。

6. 运行时常量池(Runtime Constant Pool)

对于有有有一个多 Java应用程序员而言,原困JVM的自动内存管理机制,不让都可以为每有有有一个多 new操作写对应的delete/free操作,假使 容易出现内存泄露和内存溢出的现象。然而一旦出现内存泄漏和溢出方面的现象,原困对JVM内存管理机制不了解,没有排查错误将十分艰难。

Java虚拟机的多应用程序是通过应用程序轮流切换并分配外理器执行时间的法律法律办法来实现的,在任何有有有一个多 选则的时刻,有有有一个多 外理器(对于多核外理器来说是有有有一个多 内核)都只会执行第十根应用程序中的指令。