- 浏览: 198464 次
- 性别:
- 来自: 哈尔滨
文章分类
- 全部博客 (267)
- java.lang (8)
- 问题汇总 (21)
- 异常记录 (20)
- 功能实现 (19)
- 面试总结 (25)
- 技巧总结 (8)
- 常用代码 (4)
- 编程习惯 (3)
- 编码规则 (3)
- java.util (10)
- java.io (1)
- JavaWeb (9)
- MySQL (16)
- SVN (3)
- MyBatis (11)
- Velocity (7)
- 其他知识 (10)
- 人生哲理 (1)
- 人生故事 (1)
- 自我感悟 (1)
- shiro (3)
- 基础知识 (0)
- 问题总结 (1)
- Spring 标签 (1)
- Spring (3)
- 点滴生活 (1)
- DOS (1)
- CAS (4)
- Linux (9)
- Storm (6)
- Shell (1)
- regex (1)
- Collection (4)
- poi (1)
- 经典语句 (1)
- NIO (5)
- concurrent (14)
- RPC (1)
- zookeeper (3)
- 待整理 (2)
- Hadoop (9)
- RabbitMq (2)
- flume (1)
- hive (7)
- hbase (4)
- kafka (1)
- scala (1)
- GC (0)
- java.util.concurrent.atomic (1)
- java.lang.ref (6)
- JVM (2)
- algorithm (1)
- conception (1)
- java key word (1)
- sun.misc (1)
最新评论
一、Java 运行时区域
《Java 虚拟机规范(Java SE 7 版)》
1.类装载子系统通过类的全限定名加载 class 文件
2.进而与运行时数据区交互
方法区、Java堆区、Java栈区、程序计数器、本地方法栈
3.通过执行引擎调用本地库接口,进而操作本地方法库
二、
1.
方法区、堆区、栈区、本地方法栈、程序计数器
2.
持久代+堆
持久代=方法区+其他
堆=新生代+老生代
新生代=伊甸园区+s1+s0
3.堆溢出
循环中new对象,由于强引用,GC未能对资源进行回收,直到资源耗尽
初始化过大的资源,系统默认的堆大小不够
4.栈溢出
每次操作都会进行压入栈中,达到栈的最大大小,不能再继续压栈
博文参考:
JVM中的直接引用和符号引用
JVM内存模型及 堆溢出、栈溢出问题
PC Register :程序计数器
Hotspot
常见内存溢出问题
JVM
《Java 虚拟机规范(Java SE 7 版)》
1.类装载子系统通过类的全限定名加载 class 文件
2.进而与运行时数据区交互
方法区、Java堆区、Java栈区、程序计数器、本地方法栈
3.通过执行引擎调用本地库接口,进而操作本地方法库
- Java 运行时数据区:方法区、堆、虚拟机栈、程序计数器、本地方法栈
- 线程共享数据区:方法区、堆
- 线程隔离数据区:虚拟机栈、本地方法栈、程序计数器
定义 | 方法区 | 虚拟机栈 | 本地方法栈 | 程序计数器 | 堆 |
英文 | Method Area | VM stack | Native Method Stack | Program Counter Register | Heap |
共享/私有 | 共享内存 | 线程私有,生命周期和线程一致 | 线程私有 | 内存空间小,线程私有 | 线程共享 |
存储 | 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据 | 描述的是 Java 方法执行的内存模型:每个方法在执行时都会床创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行结束,就对应着一个栈帧从虚拟机栈中入栈到出栈的过程 | Java 虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务 | 如果线程正在执行一个 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是 Native 方法,这个计数器的值则为 (Undefined) | 主要是存放对象实例和数组 |
OutOfMemoryError | - | StackOverflowError:线程请求的栈深度大于虚拟机所允许的深度。OutOfMemoryError:如果虚拟机栈可以动态扩展,而扩展时无法申请到足够的内存。 | 同本地方法栈 | 无 | OutOfMemoryError:如果堆中没有内存完成实例分配,并且堆也无法再扩展时,抛出该异常 |
其他 | 运行时常量池:属于方法区一部分,用于存放编译期生成的各种字面量和符号引用。编译器和运行期(String 的 intern() )都可以将常量放入池中。内存有限,无法申请时抛出 OutOfMemoryError | 局部变量表:存放了编译期可知的各种基本类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference 类型)和 returnAddress 类型(指向了一条字节码指令的地址) | - | 字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成 | - |
二、
1.
方法区、堆区、栈区、本地方法栈、程序计数器
2.
持久代+堆
持久代=方法区+其他
堆=新生代+老生代
新生代=伊甸园区+s1+s0
3.堆溢出
循环中new对象,由于强引用,GC未能对资源进行回收,直到资源耗尽
初始化过大的资源,系统默认的堆大小不够
4.栈溢出
每次操作都会进行压入栈中,达到栈的最大大小,不能再继续压栈
博文参考:
JVM中的直接引用和符号引用
JVM内存模型及 堆溢出、栈溢出问题
PC Register :程序计数器
Hotspot
常见内存溢出问题
JVM
发表评论
-
京东商城--商城研发部面试
2017-12-01 19:30 5492017年12月01日 笔试题目 1. final fina ... -
海量日志数据,提取出某日访问百度次数最多的那个IP
2017-11-29 21:18 2179问题:一个的日志文件中存放IP地址,按照访问量对IP地址取访问 ... -
对象访问分析
2017-11-12 20:56 1236对象引用及对象赋值 ... -
输出十进制数字的二进制数的表示
2017-11-03 23:16 1051一、代码如下: public static void m ... -
将数组中的内容随机打乱
2017-10-27 22:45 467问题:斗地主游戏,开局会将纸牌重新打乱,请用数组的随机排序实现 ... -
String为什么使用final 修饰
2017-10-25 22:32 912主要是为了”安全性“和”效率“的缘故 1、由于String类 ... -
沐金地面试记录
2017-10-25 22:15 45710.25 下午同事帮忙投递的,约在晚上面试,下班之后赶紧去了 ... -
JD广告部面试经历
2017-10-23 16:46 385同事的同事招聘,于是同事帮忙推荐了一下! 2017年10月1 ... -
编程题目(一)
2017-09-28 22:28 3631.函数:参数为两个字符串a,b ,判断 b 中是否包含 a ... -
值传递与引用传递
2017-05-30 12:25 291一、值传递与引用传递 其实按值还是按引用的区别在于“是否在传 ... -
装箱与拆箱
2016-10-24 22:46 468public class IntegerTest { ... -
可变性与不可变性
2015-06-01 20:55 405String StringBuilder StringBuff ... -
CS架构和BS架构的区别
2015-05-25 08:50 435一、简介 1.C/S结构,即 ... -
HTTP常见响应状态码
2015-05-20 08:26 381问题:程序调试过程中 ... -
JIT的概念
2015-05-19 18:48 657参考文献: http://blog.csdn.net/yan ... -
JDK与JRE与JVM的区别
2015-05-19 18:45 10501.JDK (1)概念 JDK : Java Developm ... -
运行时与编译时
2015-05-17 18:05 496运行时与编译时 博文转载:http://www.import ... -
System.exit(0)与return的区别
2015-05-17 16:49 967问题:System.exit(0)与return的区别 1. ... -
重载(overloading)与重写(overriding)
2015-05-17 15:50 594问题:重载(overloading)与重写(overridin ... -
==和equals
2015-05-15 20:07 612参考文献: http://www.cnblogs.com/zh ...
相关推荐
学习关于JVM基础,java内模型的全面透析,Jar hell问题以及解决办法,Class文件格式 • Java编译执行流程 • ClassFile的格式介绍 • ClassFile中FieldInfo和MethodInfo介绍 • 类型描述Descriptor介绍 • ClassFile...
JVM基础
JVM基础-超清文字版.pdf 这个是带完整目录书签的文字版本,文本内容可以复制的哦
JVM基础知识及jvm架构介绍,jvm性能调优策略和方法
包含2个PDF文件:JVM基础+JVM高级特性
jvm基础部分,不包括后面的指令集
jvm基础知识与调优-jvm-training
自己全部的知识库,全部笔记链接,知识,家当:JVM基础及微服务基础知识大数据技术全栈及面试指南
JVM基础内存模型,调优了解
JVM基础系列
JVM 基础 JAVA 并发 JVM 性能调优 LeetCode 算法 .......
JVM基础_菜鸟_加水印.pdf
JVM基础理解,以做成xmind欢迎分享
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在...
java virtual machine JVM基础概念和垃圾回收原理,jvm调优的基本指南
Java中的JVM基础-数据类型和堆栈_.docx
JVM基础教程书pdf格式,学习jvm初级的教程
jvm的基础知识总结,根据线程共享和线程私有来划分,进行分别描述和具体参数解释和设置,可以更好的学习jvm的基础知识,方便以后运用
一、Jdk组成 二、Jdk32与jdk64的差异 三、自动内存管理机制 四、内存泄露与内存溢出 五、垃圾回收算法 六、虚拟机性能监控工具