JVM内存模型系列(堆、方法区以及对象和GC) 编程技术

JVM内存模型系列(堆、方法区以及对象和GC)

上文已经介绍了JVM内存模型中线程私有的部分(虚拟机栈、本地方发栈、程序计数器),那么本篇文章就来探讨下JVM中线程共享的区域:堆、方法区 方法区 方法区是JVM规范中定义的一个逻辑内存,在JDK1.8以前对方法区的实现叫做“永久代”,然而在JDK1.8以后讲“永久代”废弃,改为“元空间”对其方法区进行实现,并且存储位置是本地内存,但是它依旧是JVM的逻辑区域。方法区存储了每一个类的结构信...
阅读全文
超硬核Java工程师秋招回忆录+面经汇总,为了拿BAT的研发offer我都做了那些准备? 编程技术

超硬核Java工程师秋招回忆录+面经汇总,为了拿BAT的研发offer我都做了那些准备?

秋招总结 写在最前 我写过很多篇秋招总结,这篇文章应该是最后一篇总结,当然也是最完整,最详细的一篇总结。秋招是我人生中一段宝贵的经历,不仅是我研究生生涯交出的一份答卷,也是未来职业生涯的开端。仅以此文,献给自己,以及各位在求职路上的,或者是已经经历过校招的朋友们。不忘初心,方得始终。 前言 在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到...
阅读全文
Java垃圾回收详解 编程技术

Java垃圾回收详解

1.GC介绍 什么是垃圾回收(GC)? 垃圾回收,顾名思义,便是将已经分配出去的,但却不再使用的内存回收回来,以便能够再次分配。 在 Java 虚拟机的语境下, 垃圾 指的是死亡的对象所占据的堆空间。 Java 虚拟机中的垃圾回收器采用 可达性分析 来探索所有存活的对象。它从一系列 GC Roots 出发,边标记边探索所有被引用的对象。 为了防止在标记过程中堆栈...
阅读全文
JVM系列-读懂 GC 日志 编程技术

JVM系列-读懂 GC 日志

Java 生态发展到今天,JVM (Java Virtual Machine)的价值可能已经超过了 Java 语言本身。 而 GC (垃圾回收)机制也是 JVM 的核心之一,在程序运行的过程中,GC 的过程会以日志的形式记录下来,看懂 GC 日志是研究 GC 机制的基础,GC日志也是判断 Java 程序运行是否正常的重要依据。 这篇文章将会从多个方面来详细说明 GC 日志,本文基于 Ope...
阅读全文
JVM-运行时数据区—方法区 Java

JVM-运行时数据区—方法区

在jdk7及以前,习惯上把方法区称为永久代。jdk8开始,使用元空间取代了永久代。 本质上,方法区和永久代并不等价。仅是对hotSpot而言的。《java虚拟机规范》对如何实现方法区,不做统一要求。例如:BEA JRockit/IBM J9中不存在永久代的概念。 现在看来,当年使用永久代,不是好的idea。导致Java程序更容易OOM(超过-XX:MaxPermSize上限)。 ...
阅读全文
面试官:那些连JVM都说不清楚的Android开发,直接淘汰…… 编程技术

面试官:那些连JVM都说不清楚的Android开发,直接淘汰……

每增长一岁,就增长一份迷茫,对于未来的规划,当然还是想去大厂,拿着高薪,漂亮的福利,如果有一天实在待腻了也有相当不错的技术背景。对于一个具备独立开发能力,有带团队经验的技术人来说,想去大厂应该是没问题的,但每次大厂的面试都会无情的打脸。 很多人还实在想不通为什么大厂的面试官都面那么“偏”的问题,Android底层知识里 JVM 属于必问的,但仍有人特别好奇,难道Android开发者中只有“我”...
阅读全文
不会吧,你连Java 多线程线程安全都还没搞明白,难怪你面试总不过 编程技术

不会吧,你连Java 多线程线程安全都还没搞明白,难怪你面试总不过

什么是线程安全? 当一个线程在同一时刻共享同一个全局变量或静态变量时,可能会受到其他线程的干扰,导致数据有问题,这种现象就叫线程安全问题。 为什么有线程安全问题? 当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题,但是做读操作时不会发生数据冲突问题。 线程安全解决办法? 1、如何解决多线程之间线程安全问题? 答:使用多线程之间同步s...
阅读全文
解读 Java 内存模型 编程技术

解读 Java 内存模型

伟人之所以伟大,是因为他与别人共处逆境时,别人失去了信心,他却下决心实现自己的目标。 Java内存模型(Java Memory Model)定义了Java的线程在访问内存时会发生什么。这里针对以下几个要点进行解析: 重排序 可见性 synchronized volitile final Double-Checked Locking 首先了解一...
阅读全文
Java虚拟机#1——Java内存模型 编程技术

Java虚拟机#1——Java内存模型

前言 在昨天我回答了一个关于Java虚拟机的问题,顺带复习了一边Java虚拟机,就打算写一篇关于内存模型的文章巩固记忆。在Java中,内存溢出异常不想C/C++那样频繁,但是一旦出现却难解决的多,需要丰厚的Java虚拟机方面的知识。身为一个Java程序员,是有必要在这方面多做积累的。本文以介绍概念与基本术语为主 运行时数据区域 Java虚拟机在执行Java程序的时候会将他所管理的内存分为若干...
阅读全文
Java运行时数据区总结 编程技术

Java运行时数据区总结

此内存区域是唯一一个在《Java虚拟机规范》中没有任何规定任何OutOfMemoryError情况的区域 Java虚拟机栈 Java方法执行的线程内存模型。 特性 线程私有。即每个线程都拥有一个独立的Java虚拟机栈,各个线程之间的Java虚拟机栈互不影响。 运行细节 每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储变量表、操作...
阅读全文
Loading...