java内存区域和内存溢出异常--->171224
来源:互联网 发布:js 数组 contains方法 编辑:程序博客网 时间:2024/06/05 06:00
今天是西方的平安夜,没有过节的任何感觉,我想尽快的把Java、算法、os、网络的知识复习一遍,从而在年前找到一个不错的实习。大概不到两个月的时间就过年,所以时间很是紧迫,我计划准备10天,然后投开始简历,毕竟该忘的都忘了,不该忘的也给忘了,上次去面试就因为什么都没有准备,在算法方面被虐的够够的,最长公共子序列和哈希算法还有算法复杂度的计算,目前待解决。
今天的工作大部分放在了排序算法上,冒泡和快排、插入和希尔、选择和堆排序等,大部分内容写在了笔记本上,不在提及。下面总结一下Java虚拟机里的一些基本内容,主要指的是Java内存区域和内存溢出异常方面的内容。还有归并排序和快排的带有0区的没有搞定,计划把王道数据结构上的非选择题搞一遍!
Java虚拟机所管理的内存包括以下几个运行时的数据区域:程序计数器(PC)、堆、虚拟机栈、本地方法栈、方法区等。
1、程序计数器是一块较小的内存空间,可以看作是当前线程所执行字节码的行号指示器,在虚拟机的概念模型中,字节码解释器工作时就是通过改变程序计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。
每条线程都需要一个独立的程序计数器,且之间相互不影响,独立存储,我们称这类内存区域为“线程私有”的内存。如果一个线程正在执行一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器则为空(Undefined)。
这个区域在Java虚拟机规范中唯一的没有规定任何OutOfMemoryError异常的区域。
2、Java虚拟机栈:明天再续!
参考:《深入理解Java虚拟机:JVM。。。》