Java垃圾回收详解 编程技术

Java垃圾回收详解

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

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

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

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

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

10种常见OOM分析——手把手教你写bug

点赞+收藏 就学会系列,文章收录在 GitHub JavaKeeper ,N线互联网开发必备技能兵器谱,笔记自取 在《Java虚拟机规范》的规定里,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError 异常的可能。 本篇主要包括如下 OOM 的介绍和示例: java.lang.StackOverflowError java...
阅读全文
Jvm知识点 Java

Jvm知识点

就算你躺在沙发上三天不起,拉不开窗帘,因为决定不了穿哪双袜子哭个没完,我也不会停止爱你. 前言 面试的时候 必问JVM ,淦!咱们准备好好复习吧,加油!奇怪的知识又增加了呐. 1. JVM内存模型 根据JVM规范,JVM 内存共分为虚拟机栈,堆,方法区,程序计数器,本地方法栈五个部分 程序计数器(线程私有): 是当前线程锁执行字节码的行号治时...
阅读全文
JVM工作原理和工作流程简述 Java

JVM工作原理和工作流程简述

JAVA之所以跨平台,是因为有JVM这么一个编译和运行机器,它令对于系统的操作对于用户而言是黑盒的,使得开发人员更快速和更注重软件功能的实现。然而,也因为jvm是黑盒,所以内部和底层具有不确定性,如果用状态机来表示jvm,那么jvm就是一种现役复制不确定的状态机,因为它的状态和表现跟系统、底层、硬件等等都有关系,从而状态是不确定,如果在分布式应用中,jvm一直以来兼容性都不是很好,这就是主要原因。...
阅读全文
Java 应用线上问题排查思路、常用工具小结 编程技术

Java 应用线上问题排查思路、常用工具小结

来源:https://ricstudio.top/archives/java-online-question-probe 前言 本文总结了一些常见的线上应急现象和对应排查步骤和工具。分享的主要目的是想让对线上问题接触少的同学有个预先认知,免得在遇到实际问题时手忙脚乱。毕竟作者自己也是从手忙脚乱时走过来的。 只不过这里先提示一下。在线上应急过程中要记住,只有一个总体目标: 尽快...
阅读全文
从Linux内核理解JAVA的NIO 编程技术

从Linux内核理解JAVA的NIO

IO 可以简单分为 磁盘 IO 和 网络 IO , 磁盘 IO 相对于 网络 IO 速度会快一点,本文主要介绍 磁盘 IO , 网络 IO 下周写。 JAVA 对 NIO 抽象为 Channel , Channel 又可以分为 FileChannel (磁盘 io)和 SocketChannel (网络 io)。 如果你对 IO 的理解只是停留在 api 层面那是远远不够的,一定要了...
阅读全文
2万字长文包教包会 JVM 内存结构 编程技术

2万字长文包教包会 JVM 内存结构

JVM  ≠ Japanese Video's Man 写这篇的主要原因呢,就是为了能在简历上写个“熟悉JVM底层结构”,另一个原因就是能让读我文章的大家也写上这句话,真是个助人为乐的帅小伙。。。。嗯,不单单只是面向面试学习哈,更重要的是构建自己的JVM 知识体系,Javaer 们技术栈要有广度,但是 JVM 的掌握必须有深度 点赞+收藏 就学会系列,文章收录在 GitHub J...
阅读全文
Loading...