Java虚拟机
文章平均质量分 80
麦芒小蚱蜢
互联网金融-支付方向,Java 后端开发工程师
展开
-
Java 内存区域与内存溢出异常(一)
一、Java 运行时数据区域参考:《深入理解Java虚拟机》-jvm高级特性与最佳实现(周志明著)Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的区域,这些区域有各自的用途,以及创建和销毁的时间。根据Java虚拟机规范的规定,Java虚拟机所管理的内存,包括如下几个区域:程序计数器,Java虚拟机栈,本地方法栈,Java堆,方法区,运行时常量池,直接内存...原创 2018-10-02 20:45:28 · 121 阅读 · 0 评论 -
JVM 内存模型(一)
Java 内存模型参考:《深入理解Java虚拟机》-jvm高级特性与最佳实现(周志明著)一、前言多任务处理是现代计算机操作系统中一项必备的功能,不仅仅是因为计算机的运算能力强大了,还有一个原因是因为计算机的运算速度与它的存储和通信子系统速度差距太大,大量的时间耗费在磁盘I/O,网络通信或者数据访问上,如果不希望处理器大部分时间里都在等待其他资源的状态,就必须使用一些手段把处理器的运算能...原创 2018-10-02 12:58:10 · 124 阅读 · 0 评论 -
Java 内存区域与内存溢出异常(二)
一、虚拟机中Java对象的创建参考:《深入理解Java虚拟机》-jvm高级特性与最佳实现(周志明著)语言层面上,创建Java对象通常仅仅是一个new关键字而已。在虚拟遇到new指令时:1、首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个类的符号引用代表的类是否已经加载,解析和初始化过。如果没有,则必须执行类加载过程2、接下来为新生对象分配内存,对象所需的...原创 2018-10-03 10:22:45 · 131 阅读 · 0 评论 -
Java 内存区域与内存溢出异常(三)
实战:OutOfMemoryError 异常参考:《深入理解Java虚拟机》-jvm高级特性与最佳实现(周志明著)之前的两篇中介绍Java虚拟机中各个运行时内存区域的作用,这节中通过人为异常的方式验证各个运行时区存储的内容一、Java堆溢出Java堆中用于存储对象的实例,所以只要不断创建对象,并且保证GC Roots到对象之间有可达路径(保证对象有引用,而不会被GC回收)来避免垃圾...原创 2018-10-03 14:11:32 · 187 阅读 · 0 评论 -
垃圾收集器与内存分配策略——判断对象是否存活
参考:《深入理解Java虚拟机》-jvm高级特性与最佳实现(周志明著)前言1、Java内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈3个区域随着线程而生,随着线程而灭;在方法结束后,占用的内存跟着就回收了,不需要过多考虑垃圾回收问题;2、但是Java堆和方法区则不一样,一个方法中多个分支需要的内存也不一样,我们只有在程序运行期间才知道会创建哪些对象?这部分内存的分配都是...原创 2018-10-03 18:54:52 · 163 阅读 · 0 评论 -
垃圾收集器与内存分配策略——垃圾收集算法与HotSpot虚拟机算法实现
垃圾收集算法的具体实现涉及大量的程序细节,这里只描述其算法的基本思想和发展过程一、常见的垃圾收集算法对比如下收集算法 具体实现 优点 不足 标记-清除算法 1、首先标记出所有需要回收的对象 2、标记完成之后,统一回收所有被标记的对象 效率低:标记和清除两个过程效率都不高 空间问题:标记清除之后又大量的碎片,...原创 2018-10-04 12:56:50 · 129 阅读 · 0 评论 -
垃圾收集器与内存分配策略——内存分配策略与回收策略
内存分配策略与回收策略参考:《深入理解Java虚拟机》-jvm高级特性与最佳实现(周志明著)前言Java技术体系所倡导的内存管理最终可以贵大为自动化解决两个问题:给对象分配内存以及回收分配给对象的内存。如下的内容是基于Client模式下默认的垃圾收集器组合一、内存分配的普遍规则1、对象优先在Eden空间分配,大多情况下,对象在新生代的Eden空间进行分配,当Eden空间没有...原创 2018-10-04 14:53:53 · 136 阅读 · 0 评论