前面说过了类的加载机制,里面讲到了类的初始化中时用到了一部分内存管理的知识,这里让我们来看下Java虚拟机是如何管理内存的。 先让我们来看张图 有些文章中对线程隔离区还称之为线程独占区,其实是一个意思了。下面让我们来详细介绍下这五部分; 运行时数据区 Java虚拟机在执行Java程序的过程中会把它所 ...
分类:
编程语言 时间:
2018-08-24 13:32:17
阅读次数:
245
作者:dannyhoo6688 链接:https://blog.csdn.net/huyuyang6688/article/details/81490570 本文是学习了《深入理解Java虚拟机》之后的总结,主要内容都来自于书中,也有作者的一些理解。一是为了梳理知识点,归纳总结,二是为了分享交流,如 ...
分类:
其他好文 时间:
2018-08-21 18:24:43
阅读次数:
274
网上有很多关于Java内存模型的文章,在《深入理解Java虚拟机》和《Java并发编程的艺术》等书中也都有关于这个知识点的介绍。但是,很多人读完之后还是搞不清楚,甚至有的人说自己更懵了。本文,就来整体的介绍一下Java内存模型,目的很简单,让你读完本文以后,就知道到底Java内存模型是什么,为什么要 ...
分类:
编程语言 时间:
2018-08-21 10:50:40
阅读次数:
142
垃圾回收机制(GC)是java常重要特性之一。它让开发者无需关注内存的创建和释放,而是通过GC自动回收垃圾(无用对象)。 哪些内存需要回收 java堆和方法区是垃圾回收的主要内存区域,程序计数器、虚拟机栈、本地方法栈这几个内存区域是现成私有的,线程结束时内存自然也就回收了。 如何判断对象可回收? 在 ...
分类:
编程语言 时间:
2018-08-17 22:20:01
阅读次数:
177
前几天,发了一篇文章,介绍了一下JVM内存结构、Java内存模型以及Java对象模型之间的区别。有很多小伙伴反馈希望可以深入的讲解下每个知识点。Java内存模型,是这三个知识点当中最晦涩难懂的一个,而且涉及到很多背景知识和相关知识。 网上有很多关于Java内存模型的文章,在《深入理解Java虚拟机》 ...
分类:
编程语言 时间:
2018-08-17 16:33:25
阅读次数:
174
主要内容如下: JVM启动流程 JVM基本结构 内存模型 编译和解释运行的概念 一、JVM启动流程: JVM启动时,是由java命令/javaw命令来启动的。 二、JVM基本结构: JVM基本结构图: 《深入理解Java虚拟机(第二版)》中的描述是下面这个样子的: Java中的内存分配: Java程 ...
分类:
编程语言 时间:
2018-08-14 21:56:36
阅读次数:
132
引自《深入理解Java虚拟机》 关键词:优先级,大对象,老不死对象 三个策略: 对象优先在Eden区分配 大对象直接进入老年代(大对象举例:很长的String,很长的数组) 长期存活的对象进入老年代 长期存活:从Eden出生,每经历一次Minor GC 年龄加1(出生时为0,年龄为1时已经在Surv ...
分类:
其他好文 时间:
2018-08-13 20:58:14
阅读次数:
135
3.1 概述 垃圾收集器要解决哪些问题? 哪些内存需要回收 什么时候回收 如何回收 哪些内存需要回收 什么时候回收 如何回收 引用计数算法:当有一个地方引用,+1,引用失效,-1。 缺点:对象之间相互循环引用的问题。 可达性分析算法: 思路:通过一系列的成为“Gc Roots"的对象作为起始点,从这 ...
分类:
编程语言 时间:
2018-08-11 15:35:33
阅读次数:
190
一.前言 物理机的执行引擎是直接在物理硬件如CPU、操作系统、指令集上运行的,但是对于虚拟机来讲,他的执行引擎由自己实现。 执行引擎有统一的外观(Java虚拟机规范),不同类型的虚拟机都遵循了这一规范,输入字节码文件,解析字节码处理,然后输出结果。 二.运行时栈帧结构 1、栈帧概念栈帧(Stack ...
分类:
编程语言 时间:
2018-08-06 14:31:35
阅读次数:
198
一.程序存储格式 统一的程序存储格式:不同平台的虚拟机于所有平台都统一使用程序存储格式——字节码(ByteCode); Java 虚拟机不关心 Class 文件的来源,而只和“Class文件"这种二进制文件格式关联,也就是说Java虚拟机只认识“Class"文件; Java 编译器可以把 Java ...
分类:
编程语言 时间:
2018-08-06 11:42:12
阅读次数:
176