java内存划分
2016-07-10 23:52
197 查看
Java能被广泛使用,很重要的就是GC(Garbage Collection,垃圾回收)机制,也是Java与C/C++的主要区别之一。GC机制带来的好处就是不需要我们过多地关注内存泄漏导致的OOM,但是这并不意味着Java开发就不会有内存泄漏,另外在某些情况下GC也会影响程序运行效率,极端情况下导致“整个世界都静止了”。
Java的GC,设计到内存管理。Java的内存区域分
1.程序计数器(Program Counter Register)区
这个区域比较小,记录当前java线程字节码执行到的位置。它是线程私有(一个线程关联一个程序计数器).
2.虚拟机栈(JVM Stack)区
先进后出的数据区,存储Java的局部变量,操作数,方法出口等,也是线程私有
3.本地方法栈(Native Method Stack)区
也就是执行本地代码时用到的栈,线程私有
4.堆(Heap)区
Java GC的最重要的区域,这里是Java对象实例数据生成和销毁的地方,属于所有线程
5.方法区(Method Area)
用于存储已经被虚拟机加载的类信息(即加载类时需要加载的信息,包括版本、field、方法、接口等信息)、final常量、静态变量、编译器即时编译的代码等。属于所有线程
Java的GC,设计到内存管理。Java的内存区域分
1.程序计数器(Program Counter Register)区
这个区域比较小,记录当前java线程字节码执行到的位置。它是线程私有(一个线程关联一个程序计数器).
2.虚拟机栈(JVM Stack)区
先进后出的数据区,存储Java的局部变量,操作数,方法出口等,也是线程私有
3.本地方法栈(Native Method Stack)区
也就是执行本地代码时用到的栈,线程私有
4.堆(Heap)区
Java GC的最重要的区域,这里是Java对象实例数据生成和销毁的地方,属于所有线程
5.方法区(Method Area)
用于存储已经被虚拟机加载的类信息(即加载类时需要加载的信息,包括版本、field、方法、接口等信息)、final常量、静态变量、编译器即时编译的代码等。属于所有线程
相关文章推荐
- 成为JavaGC专家(2)—如何监控Java垃圾回收机制
- 成为JavaGC专家(1)—深入浅出Java垃圾回收机制
- 001——jdk环境配置
- java操作mysql数据库时乱码
- Java开发工具之Eclipse
- Java 集合 持有引用 & WeakHashMap
- eclipse配置maven搭建spring环境
- struts之文件下载
- 写给精明Java开发者的测试技巧
- Java 反射:Classes
- eclipse快捷键设置
- Java 并发工具包 java.util.concurrent 用户指南
- Java8初体验(2):Stream语法详解
- Java8初体验(1):lambda表达式语法
- Java 8新的时间日期库的20个使用示例
- Eclipse 和 Intellij idea 快捷键的区别
- Java 8新特性之旅:使用Stream API处理集合
- spring boot 无法启动
- Java 理论与实践: 正确使用 Volatile 变量
- Java8简单的本地缓存实现