一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 ...
分类:
编程语言 时间:
2019-11-22 00:34:49
阅读次数:
72
# ./g1.sh q w e r t./g1.sh q w e r5个参数number is q w e r t[root@localhost get]# cat g1.sh#!/bin/bash# -*- coding: utf-8 -*-# #Author:chengyixuan#Email: ...
分类:
其他好文 时间:
2019-11-21 20:03:53
阅读次数:
68
新生代收集器 Serial New 单线程收集器,工作时必须暂停其他线程; 简单高效,没有线程交互开销; 基于复制算法; Parallel New 对Serial的改进,多线程; CPU数量 ...
分类:
其他好文 时间:
2019-11-21 17:13:20
阅读次数:
64
JVM的运行数据区 首先我简单来画一张 JVM的结构原理图,如下。 我们重点关注 JVM在运行时的数据区,你可以看到在程序运行时,大致有5个部分。 1.方法区 不止是存“方法”,而是存储整个 class文件的信息,JVM运行时,类加载器子系统将会提取 class文件里面的类信息,并将其存放在方法区中 ...
分类:
编程语言 时间:
2019-11-21 12:11:33
阅读次数:
101
目录: 如何判断垃圾是否回收? 引用计数法 可达性分析算法 四种引用 引用队列 垃圾回收算法 标记清除算法 复制算法 标记整理算法 分代垃圾回收 新生代 老年代 Minor GC 和 Full GC的区别 总结 垃圾回收器 原理 串行回收器 吞吐量优先 获取最短停顿时间优先(CMS) G1 垃圾回收 ...
分类:
其他好文 时间:
2019-11-21 10:18:50
阅读次数:
133
线程与进程(了解)→JVM→字节码→GC 一、程序 = 算法 + 数据结构(大佬) 二、程序 = 框架 + 业务逻辑(现实) 1.线程与进程、同步与异步 1.1进程是什么? 进程就是操作系统控制的基本运行单元,说白了就是Java运行程序。 1.2什么是线程? 进程中独立运行的子任务就是一个线程 1. ...
分类:
编程语言 时间:
2019-11-17 17:55:59
阅读次数:
96
11.JVM内存分哪几个区,每个区的作用是什么? java虚拟机主要分为以下一个区: 方法区:1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载2. 方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器 ...
分类:
其他好文 时间:
2019-11-17 12:53:24
阅读次数:
86
jvm学习之gc垃圾回收机制 1、什么是垃圾回收? 堆中使用对象,但是不能一直放在那里,会占内存,所以需要垃圾回收,释放多余内存,从而保证程序的正常运行。 2、垃圾回收之前应该判断到底什么是垃圾? 引用计数法:对象保存着被引用的次数,被引用一次就+1,删除引用一次-1,如果引用个数为0,那么会被回收 ...
分类:
其他好文 时间:
2019-11-16 23:41:39
阅读次数:
87
非静态内部类导致内存泄漏主要原因:::App可能会因为大量的内存泄漏导致内存耗尽,引发Crash,如果内存耗尽,App会由于内存空间不足,出现频繁的GC,每一次GC都是一个耗时阻塞操作,会造成设备卡顿。 非静态内部类中创建了一个静态实例,导致该实例的生命周期和应用ClassLoader级别,又因为该 ...
分类:
其他好文 时间:
2019-11-16 10:35:11
阅读次数:
131
强引用(StrongReference):JVM宁可抛出OOM,也不会让GC回收具有强引用的对象 生命周期:JVM停止的时候才会终止 软引用(SoftReference):只有在内存空间不足时,才会被回收的对象 生命周期:内存不足时终止 弱引用(WeakReference):在GC时,一旦发现了只具 ...
分类:
其他好文 时间:
2019-11-16 10:26:14
阅读次数:
69