主要回收废弃常量和无用的类

废弃常量包括字面量、类或接口、方法、字段的符号引用等

废弃指的是没有任何地方引用这个常量。

无用的类

满足的三个条件:

1。没有该类的任何实例存在

2。加载该类的ClassLoader已经被回收

3。该类对应的java.lang.Class对象没有任何地方被引用,无法在任何地方通过反射反问该类的方法。

而当满足这三个条件时,虚拟机仅仅是“可以”对这个类进行回收,而不是像对象一样,不使用了就必然回收。此时可以通过虚拟机参数-Xnoclassgc参数进行控制。

虚拟机中GC中的并行与并发

并行:多个垃圾线程同时并行执行,用户线程处于等待状态;

并发:垃圾收集线程和用户线程同时执行,不一定是并行执行,可能是交叉执行,用户程序继续运行,而垃圾收集程序运行那个在另一个CPU上

方法区回收过程与GC的并发与并行的更多相关文章

  1. jvm高级特性(2)(判断存活对象算法,finaliza(),方法区回收)

    JVM高级特性与实践(二):对象存活判定算法(引用) 与 回收 垃圾回收器GC(Garbage Collection) 于1960年诞生在MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语 ...

  2. Java虚拟机垃圾回收:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法

    在<Java对象在Java虚拟机中的创建过程>了解到对象创建的内存分配,在<Java内存区域 JVM运行时数据区>中了解到各数据区有些什么特点.以及相关参数的调整,在<J ...

  3. JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题

    1.线程和进程 进程:一个程序,微信.qq...程序的集合.(一个进程包含多个线程,至少包含一个线程.java默认有两个线程:主线程(main).垃圾回收线程(GC) 线程:runnable.thre ...

  4. 对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁

    1.  对象回收过程? 可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用. 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径 称为引用链 ...

  5. 常见GC算法,CMS以及G1的垃圾回收过程,CMS的各个阶段哪两个是Stop the world的,CMS会不会产生碎片,G1的优势。

    常见GC算法 在C/C++中是由程序员自己去申请.管理和释放内存的,因此没有GC的概念.而在Java中,专门有一个用于垃圾回收的后台线程来进行监控.扫描,自动将一些无用的内存进行释放.下面介绍几种常见 ...

  6. 【JVM之内存与垃圾回收篇】方法区

    方法区 前言 这次所讲述的是运行时数据区的最后一个部分 从线程共享与否的角度来看 ThreadLocal:如何保证多个线程在并发环境下的安全性?典型应用就是数据库连接管理,以及会话管理 栈.堆.方法区 ...

  7. Java 底层机制(JVM/堆/栈/方法区/GC/类加载)

    转载:https://www.jianshu.com/p/ae97b692614e?from=timeline JVM体系结构 JVM是一种解释执行class文件的规范技术.   JVM体系结构 我翻 ...

  8. Android内存优化4 了解java GC 垃圾回收机制2 GC执行finalize的过程

    1. finalize的作用 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法. finalize()与C++中的析构函数 ...

  9. ZGC gc策略及回收过程-源码分析

    源码文件:/src/hotspot/share/gc/z/zDirector.cpp 一.回收策略 main入口函数: void ZDirector::run_service() { // Main ...

  10. [转载]JAVA内存分析——栈、堆、方法区 程序执行变化过程

    面向对象的内存分析 参考:http://www.sxt.cn/Java_jQuery_in_action/object-oriented.html :尚学堂JAVA300集-064内存分析详解_栈_堆 ...

随机推荐

  1. 【图文教程】Centos 7下安装Hadoop

    环境说明: 系统:Centos7 在VM中安装的 hadoop版本:2.7.7 JDK:1.8 注意:Hadoop需要Java环境的.记得安装Java环境 PS:Centos JDK安装  mkdir ...

  2. 关于 MemoryStream 的多次写入,模拟post请求,接收方 .net core web api无法读取到流数据,报 System.IO.IOException: Unexpected end of Stream, the content may have already be en read by another component.

    主要是业务不熟害死人.记录一下.真想抽自己几个嘴巴子 先说结论,知道这个结论的下面文字都是废话: 一.new MemoryStream 的时候,如果需要分次写入,只能是像下面这样子 MemoryStr ...

  3. 【YashanDB知识库】绑定参数,同一个sql多个执行计划的问题

    问题现象 同一个sql有两个执行计划,是否合理? 它的EXECUTIONS,ELAPSED_TIME等统计信息怎么看,是独立分开的还是统一计算的? 如下图: 问题影响版本 tpcc测试:23.2.1. ...

  4. kuboard部署在k8s集群中

    kuboard部署在k8s集群中,yaml配置文件 #cat kuboard.yaml apiVersion: apps/v1 kind: Deployment metadata: labels: a ...

  5. Angular 18+ 高级教程 – Component 组件 の Structural Directive (结构型指令) & Syntax Reference (微语法)

    前言 在 Attribute Directives 属性型指令 文章中,我们学习过了指令.指令是没有 HTML 和 CSS 的组件,它单纯用于封装 JS 的部分. 这一篇我们将继续学习另一种指令 -- ...

  6. JAVAEE——JDK安装

    1.JDK下载 (1)jdk官网 1.输入下载地址:Oracle Software Downloads | Oracle 2.向下滑动,找到Developer Downloads后点击java 3.点 ...

  7. QT数据可视化框架编程实战之三维柱状图从入门到精通_补天云QT技术培训专家

    QT数据可视化框架编程实战之三维柱状图从入门到精通_补天云QT技术培训专家 简介 本文将介绍QT数据可视化框架(QT DataVisualization 模块)编程实战之三维柱状图(Q3DBars)的 ...

  8. 离线安装Redis

    redis 直接去官网下载tar包就可以 主要是gcc 环境的安装包不太好找,我下载的还缺少 make 如果服务器比较干净,还得预装一下lrzsz-0.12.20.tar.gz 上传下载文件,unzi ...

  9. urb中几个函数的使用

    usb_buffer_alloc(free) 说是为了更好的从名字看出这个函数真实做的事情:DMA coherency linux提供两种方式,来保证使用dma时,内存和硬件cache的一致性: us ...

  10. 检查 .net 的版本号和所有的dotnet 的sdk

    查看版本号: dotnet --version 查看所有的 sdks dotnet --list-sdks