[java基础] java 虚拟机内存机制
2015-04-29 09:49
393 查看
了解java虚拟器内存机制的好处
当我们需要解决一些棘手的问题,比如性能优化,解决OOM异常时,如果我们了解java虚拟机的内存机制,就知道从哪里下手处理这些问题了如何了解
我从三方面去说明他进程级别
我们在pc上做一个应用,在手机上做一个app,都是以进程的级别存在的。在进程这个级别中,内存被分配给/分配为 java堆、方法区(含有常量存储区)、各个线程java堆:java堆是GC线程回收内存的区域,他主要是用来存储各种对象
方法区:方法区存储了class在加载之后的信息,如全局变量,方法等
常量存储区:静态变量存储区是包含在方法区之中的,他用来存放各种static final常量,这个内存区是可变的
除了java堆和方法区,其他的内存空间就分配给各个线程了
在这些内存区内都会有可能出现OOM异常的
线程级别
程序计数器:每一个线程都会有一个程序计数器,这个在debug的时候跟踪走到哪一步。程序计数器使用的内存很少,而且这部分是不会产生OOM异常的!java虚拟机栈:顾名思义,java虚拟机栈是以栈的方式存在的,所以他的访问速度要比堆快的多。java虚拟机栈存储的是本地变量,java的基本数据类型,对象类型/array类型存储的是指向java堆的地址
native方法栈:native方法栈对应java虚拟机栈存储的是native方法的内容
栈和堆不同之处,栈是会抛出stackOverflowException的,不过也有可能会抛出OOM,但是在实战中,stack的内存超出了内存限制,一般抛出的都是stackOverflowException
其他
直接内存:直接内存是在NIO时会用到,他是为了避免native堆和本地堆来回copy数据,而实现的技术以上内容,如有错误,请大神们指正
相关文章推荐
- Java 虚拟机内存分配机制
- [Java基础] 虚拟机 内存区域
- java基础:内存分配机制
- JVM 内存基础概念之初识虚拟机与 Java 虚拟机运行时数据区
- java基础复习2(面向对象 三大特征 内存机制)
- java从基础知识(四)java内存机制
- java基础知识(四)java内存机制
- Java基础学习——Java的内存机制
- 【java基础】Java内存机制
- Java内存回收机制基础[转]
- Java基础之垃圾回收机制以及内存泄露
- Java基础之内存回收机制
- Java基础中环境变量的配置以及Java的内存资源调用分配机制
- Java内存区域分配、存储、垃圾回收策略与回收机制(深入JVM虚拟机)
- Java 虚拟机内存分配机制
- java基础之内存机制详解
- 21. Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存?
- Java基础学习总结(71)——深入理解Java虚拟机内存
- Java基础学习总结(71)——深入理解Java虚拟机内存
- JVM 内存基础概念之程序计数器与 Java 虚拟机栈和本地方法栈