代码编织梦想

JVM内存调优-爱代码爱编程

JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC 会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收,所以比较慢,因此应该尽可能减少Full GC的次数。 2.导致Full GC的原因 1)年老代(Tenured)被写满 调优时

JVM系列-GC日志分析-堆空间大小分布-爱代码爱编程

最近接触生产环境的spark任务,有很多GC问题,需要调优,平时没用过,抽空系统的学习下,特此记录,忘指教 触发GC的代码 public class HelloGC { public static void main(String[] args) { System.out.println("HelloGC!");

类加载-JVM内存模型-爱代码爱编程

java JVM 由3大部分组成:类装载子系统、字节码执行引擎、运行时数据区 类装载子系统:类加载子系统负责将我们的class文件加载到JVM的内存模型中,在方法区加入他的类信息,在堆中创建对应的java.lang.Class对象。这个类就可以被java程序所使用了 java虚拟机栈:描述的是java方法执行的内存模型:每个方法被执行的时候都会创建一个

JavaSE面试题之基本IO流及面试官写了个双冒号考试答案[图]-爱代码爱编程

一、JavaSE面试题之基本IO流 今天这篇是JavaSE系列的第十四篇,主要总结了Java中的IO流的问题,IO流分为两篇来讲,这篇是第一篇,主要是基本IO流,第二篇主要为网络IO流,在后续,会沿着第一篇开篇的知识线路一直总结下去,做到日更!如果我能做到百日百更,希望你也可以跟着百日百刷,一百天养成一个好习惯。 Q: 什么是IO流? 它是一种数据的流从源

Java内存区域-爱代码爱编程

前言: 如果没特殊说明,均以HotSpot虚拟机为例。 运行时的数据区域: 先看看1.8之前和1.8之后运行时的数据区域 1.8之前   1.8及之后   主要区别: 元空间:1.8之后替代了方法区,但是元空间这时候已经放在了本地内存,优点而言,内存更大了,只是受本地内存影响   下面分别讲下各个数据区   1.1、程序计数

深入浅出JVM(三)垃圾回收-爱代码爱编程

文章目录 前言一、如何判定对象为垃圾对象?1、引用计数法2、可达性分析算法二、垃圾收集算法1、标记清除算法2、复制算法3、标记整理算法(标记压缩算法)三、垃圾收集器1、五种简单的垃圾收集器2、CMS3、G14、各种垃圾收集器的总结总结 前言 通过前俩篇博客,相信对jvm已经初步的认识,介绍了“食物从口入喉”以及“五脏六腑”,接下来就要介绍食物

class文件 简单分析-爱代码爱编程

class文件 简单分析 ================Person.java===================== package com.lt.test; public class Person { public int mAge = 0; public String mName = ""; public Person()

JAVA字节码-爱代码爱编程

什么是class文件 JAVA字节码文件(.class文件)是java编译器编译java源文件(.java文件)所产生的目标文件。它是一种8位字节的二进制流文件,各个数据项按顺序紧密的从前向后排列,相邻的项之间没有间隙,这样使得class文件非常紧凑,体积轻巧,可被JVM快速加载到内存,并且占据较少的内存空间。理解字节码其实就是了解JVM是如何解析字节码的

总结G1垃圾收集器面试题-爱代码爱编程

介绍一下G1垃圾收集器 G1收集器伴随JAVA9于2017-9-21发布,G1收集器兼顾低延迟和高吞吐在服务端运行,HotSpot团队期望取代CMS收集器。也就是在满足停顿时间的情况下获取最大的吞度量。有两种收集模式Young GC和Mixed GC。G1收集器将堆内存划分成大小相等的Region,新生代,老年代也就成了逻辑概念。整体上采用的是标记

【笔记分享】阿里程序员分享内部大佬整理的“JVM与性能优化核心知识-爱代码爱编程

JVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java语言的一个非常重要的特点就是平台无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入

JAVA内存模型与JVM内存结构-爱代码爱编程

写在前面: JVM内存结构、Java内存模型和Java对象模型是截然不同的三种概念。 JVM内存结构:和Java虚拟机的运行时区域有关。Java内存模型:和Java的并发编程有关。Java对象模型:和Java对象在虚拟机中的表现形式有关。 Java 内存模型,描述的是多线程允许的行为JVM 内存结构,描述的是线程运行所设计的内存空间JVM 是什

JVM致命错误日志(hs_err_pid.log)分析-爱代码爱编程

最近两天测试环境有一个服务总是会挂(两到三天一次),JVM虚拟机总是会崩溃。所以有必要了解JVM崩溃的原因是什么。 当JVM发生致命错误导致崩溃时,会生成一个hs_err_pid_xxx.log这样的文件,该文件包含了导致 JVM crash 的重要信息,我们可以通过分析该文件定位到导致 JVM Crash 的原因,从而修复保证系统稳定。 默认情况下,

Java从零开始 第0讲 Java简介,为什么推荐学Java-爱代码爱编程

Java从零开始 第0讲 Java简介,为什么推荐学Java 一 关于Java,你可以了解的重要历史二 为什么选择Java,Java的优势在哪里三 什么是JDK,JRE,JVMJDK,JRE和JVM的关系JDK,JRE和JVM各有什么用转载请注明出处 一 关于Java,你可以了解的重要历史 研发Java的公司叫SUN,研发Java项目的小组叫

volatitle详解-爱代码爱编程

学习多线程并发,要着重“外炼互斥,内修可见,内功有序”,这是掌握多线程/学习多线程和并发技术的重要知识点。 volatitle 关键字volatitle 的主要作用是让其他线程可以看到最新的值,volatile 只能修饰变量。它包含三个特征: - 可见性:B线程能马上看到A线程更改的数据 - 原子性:在32位系统中,针对未使用volatile声

JVM学习总结之-HotSpot虚拟机对象探秘-爱代码爱编程

在初步了解了内存模型之后,我们需要继续了解在Java堆中,HotSpot虚拟机是怎么定义对象的内存分配,布局和访问的。 对象的创建 当Java虚拟机遇到一条new指令的时候,会先检查这个指令的参数在常量池中是否能找到对应的符号引用,如果找到了,再判断该符号引用对应的类是否已经被加载、解析、和初始化过,如果没有,则会执行相应的加载流程。在类加载

JVM深度剖析:一文详解JVM是如何实现反射的?-爱代码爱编程

反射是 Java 语言中一个相当重要的特性,它允许正在运行的 Java 程序观测,甚至是修改程序的动态行为。 举例来说,我们可以通过 Class 对象枚举该类中的所有方法,我们还可以通过Method.setAccessible(位于 java.lang.reflect 包,该方法继承自 AccessibleObject)绕过 Java 语言的访问权限,在

jvm内存溢出常见原因及处理方式-爱代码爱编程

java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都出于以下原因:JVM内存过小、程序不严密,产生了过多的垃圾。 导致OutOfMemoryError异常的常见原因有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2.集合类中有对对象的引用,使用完后未清空,使得JVM

JVM底层类加载-爱代码爱编程

JVM底层类加载 前言1.Klass模型2.类加载过程1)加载2)验证3)准备4)解析5)初始化6)使用7)卸载3.代码验证类加载规则4.读取静态属性的底层实现 前言 本文是作者自己跟着子牙老师学习JVM的笔记。 本文使用到HSDB,HSDB是JDK自带的探索JVM底层的神器,大家如果对这个工具不了解,可以百度一下。 1.Klass模型

java垃圾回收原理跟内存分配原理-爱代码爱编程

1. 什么是垃圾回收机制 不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收,垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System.gc 方法来"建议"执行垃圾收集器,但其是否可以执行,

干了三年的Java,这些JAVA技术栈你都不懂!怪不得你只能拿10K?-爱代码爱编程

目录 前言 那我该怎样快速提高开发竞争力? 一、JVM基本概念 1、JVM的运行过程 2、线程 2.1Hotspot JVM 后台运行的系统线程 2.2JVM内存区域 2.3、程序计数法 2.4、虚拟机栈(线程私有) 2.5、本地方法区(线程私有) 2.6、堆(Heap-线程共享)-运行时数据区 2.7、方法区/永久代(线程共享)