JVM-垃圾收集过程的内存管理
JDK1.7 JVM的垃圾收集算法有
JDK1.7 JVM的垃圾收集器有
垃圾收集的过程:
Survivor区的作用是什么?
方法区什么时候被回收?
永久代的垃圾收集主要回收两部分内容:废弃常量和无用类。会搜狐废弃常量与回收Java堆中的对象非常类似。以常量池中字面量回收为例,如果一个字符串 “abc” 已经进入了常量池中,但是当前系统没有任何一个String对象是叫做“abc”的,也就是没有任何String的对象引用常量池中的“abc”常量,也没有其他地方引用了这个字面量,如果这时发生内存回收,而且必要的话,这个“abc”常量就会被系统清理出常量池。常量池中其他类(接口)、方法、字段符号引用也与此类似。
类满足了下面三个条件就算是无用类:
★该类所有的实例都已经被回收,也就是Java堆中不存在该类的任何实例。
★加载该类的ClassLoader已经被回收
★该类对应的java.lang.Class 对象没有再任何地方被引用,无法在任何地方通过反射访问该类的方法。
虚拟机“可以”对满足上面三个条件的无用类进行回收(注意是“可以”而不是和对象一样,不使用了就必然会回收)。是否对无用类进行回收,HotSpot虚拟机提供了 -Xnoclassgc 参数进行控制,还可以使用 -verbpse:class 以及 -XX:+TraceClassLoading 、-XX:+TraceClassUnLoading 查看类加载和卸载信息,其中 -verbpse:class 和 -XX:+TraceClassLoading 可以再Product版的虚拟机中使用,-XX:+TraceClassUnLoading 参数需要FastDebug版的虚拟机支持
参考:
JVM-垃圾收集过程的内存管理的更多相关文章
- JVM的组成部分与内存管理
JVM的组成部分与内存管理 JVM区域划分 由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分.在讨论JVM内存区域划分之前,先来看一下Java程序 ...
- JVM学习笔记三:垃圾收集器及内存管理策略
垃圾收集器 上文说到了垃圾收集算法,这次我们聊一下HotSpot的具体垃圾收集器的实现,以JDK1.7为例,其包含的可选垃圾收集器如下图: 不同收集器之间的连线,代表它们可以搭配使用,收集器所属的区域 ...
- JVM垃圾收集器与内存分配策略(一)
在前面的Java自动内存管理机制(上)和Java自动内存管理机制(下)中介绍了关于JVM的一些基础知识,包括运行时数据区域划分和一些简单的参数配置,而其中也谈到了GC,但是没有深入了解,所以这里开始简 ...
- JVM读书笔记之内存管理
对于从事C.C++程序开发人员来说,在内存管理领域,他们既是拥有最高权力的“皇帝”又是从事最基础工作的“劳动人民”--既拥有每一个对象的“所有权”,又负责每一个对象生命开始到终结的维护责任. 对于Ja ...
- 深入理解JVM - 垃圾收集器与内存分配策略 - 第三章
引用计数算法——判断对象是否存活的算法 很多教科书判断对象是否存活的算法是这样的:给对象添加一个引用计数器,每当一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象 ...
- 深入理解JVM虚拟机-2自动内存管理机制
java虚拟机所管理的内存将会包括一下几个运行时数据区域. 程序计数器: 程序计数器是一块较小的内存空间.字节码解析式工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支.循环.跳转 ...
- JVM笔记2-Java虚拟机内存管理简介
java虚拟机内存管理图如下图所示: 1.线程共享区,是所有的线程所共用的,线程共享区有一下几个组成: 1.方法区: 1.运行时常量池,已经被虚拟机加载的类信息(1.类的版本信息,2.字段,3.方法, ...
- jvm垃圾收集器与内存分配策略
一.垃圾回收 1.对象是否已经变为垃圾 1.1.引用计数法:给对象添加一个引用计数器,每当有地方引用它时,计数器就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象就是不可能再被使用的. 这 ...
- jvm系列(二)jvm垃圾收集器与内存分配策略
众所周知,在java语言中,内存分配和回收是由jvm自动管理的.因此内存的分配和回收也是jvm三大功能之一.垃圾收集器(GC)需要完成三件事情: 哪些内存需要回收? 什么时候进行回收? 如何回收? 本 ...
随机推荐
- Hdu3549 Flow Problem 2017-02-11 16:24 58人阅读 评论(0) 收藏
Flow Problem Problem Description Network flow is a well-known difficult problem for ACMers. Given a ...
- 洛谷P4556 [Vani有约会]雨天的尾巴(线段树合并)
题目背景 深绘里一直很讨厌雨天. 灼热的天气穿透了前半个夏天,后来一场大雨和随之而来的洪水,浇灭了一切. 虽然深绘里家乡的小村落对洪水有着顽固的抵抗力,但也倒了几座老房子,几棵老树被连根拔起,以及田地 ...
- C#基础入门 六
C#基础入门 六 静态类进阶 静态构造方法 用于初始化任何静态数据,或用于执行仅需执行一次的特定操作,在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数,静态构造方法是无参数的. publ ...
- 用pillow和 opencv做透明通道的两图混全(blend)
from PIL import Image as image foreground = image.open("donkey.png") background = image.op ...
- Wpf Page间跳转传参数 And Window To Page
这段时间用到Wpf,页面间的跳转网上有不少的示例,但是有些已经不能用了,尤其是页面间的传参问题更是一大堆,但正确的解决方案却没有几个,或者说写的不清楚,让人走了很多弯路,查看官方文档后发现了正确的姿势 ...
- C#语言各个版本特性(三)
三.查询集合 1.找出List<Product>列表中符合特定条件的所有元素 C#1.1 查询步骤:循环,if判断,打印 product类 using System.Collections ...
- HTML5 LocalStorage Demo
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- Js异常捕获
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【转】如何成为一名优秀的web前端工程师(前端攻城师)?
[转自]http://julying.com/blog/how-to-become-a-good-web-front-end-engineer/ 程序设计之道无远弗届,御晨风而返.———— 杰佛瑞 · ...
- kolla-ansible 重新部署 ceph-mon 组件
1.备份数据 [root@controller ~]# mv /var/lib/docker/volumes/ceph_mon /var/lib/docker/volumes/ceph_backup/ ...