【GC概述以及查看堆内存使用】Java内存管理和GC学习

news/2024/7/20 15:18:00 标签: java, 内存管理

内存划分

1。JAVA内存主要划分为方法栈、方法区、堆。

2。方法栈上内存会自动释放;

3。方法区上主要加载了类的元信息、静态变量、常量。改区域又称为持久代(Perm Gen),默认是最小16M,最大64M。配置参数 -XX:PermSize=16m -XX:MaxPermSize=64m;

4。堆是按分代进行管理,主要分为新生代(New Gen)和旧生代(Old Gen或Tenuring Gen)。

    1)新生代又分为Eden Space,S0,S1三块区域。

    2)Eden是new出来对象的出生地(原来对象是亚当和夏娃生的啊?)。

    3)S0和S1是2块大小相同的区域,合起来又称为Survivor Space,这2块区域是进行垃圾回收时生存对象的集散地,每次回收是总是从一个区域移动到另一个区域,下次又从另一个区域移动到这个区域。

    4)堆大小默认值:最小1/64物理内存,最大1/4物理内存,32位机器最大为2G

    5)配置参数:-Xms64M(最小) -Xmx64M(最大) -Xmn16M(新生代大小)

 

GC

参考:http://www.cnblogs.com/qlqwjy/p/7953458.html

1。GC分为新生代GC和旧生代GC,新生代GC又称Minor GC。当旧生代GC触发时,也会触发新生代GC,此过程称为Full GC;

1。GC算法主要有复制(Copying)、标记-清除(Mark-Sweep)、标记-压缩(Mark-Compact);

2。Minor GC采用的算法是复制(Copying),其主要的三种方式为:

    1)串行GC(Serial GC) 暂停应用,单线程方式进行,配置参数-XX:+UserSerialGC

    2)并行回收GC(Parallel Scavenge) 暂停应用,多线程方式进行,配置方式-XX:UseParallelGC

    3)并行GC(ParNew) 配合旧生代CMS GC使用,CMS GC是与应用并发,多线程进行的,配置方式-XX:UseParNewGC

3。旧生代GC的算法主要采用标志-清除(Mark-Sweep)、标志-压缩(Mark-Compact),其主要的三种方式为:

    1)串行GC 暂停应用,单线程方式进行,算法为Mark-Sweep-Compact,配置参数-XX:+UserSerialGC;

    2)并行GC 暂停应用,多线程方式进行,算法为Mark-Compact,配置方式-XX:UseParallelGC;

    3)并发CMS(Concurrent Mark-Sweep GC) 与应用并发多线程进行,算法为Mark-Sweep,配置参数-XX:+UseConcMarkSweepGC;

 这里写图片描述

查看工具

0. jps     查看Java进程信息

1.JMap  命令jmap -heap [PID] ,统计java内存使用情况,Jdk自带;

2.JStat  命令jstat -gcutil [PID] 5s,没5秒钟输出java内存使用率以及GC的次数和时间,Jdk自带

3.jstack 命令jstack -l pid ,输出进程的堆栈信息,jdk自带

 

参考:https://my.oschina.net/feichexia/blog/196575

     http://blog.csdn.net/imxiangzi/article/details/47123849

 

转载于:https://www.cnblogs.com/qlqwjy/p/7953458.html


http://www.niftyadmin.cn/n/1823807.html

相关文章

二叉树和为某一值的路径-路径必须是从根节点出发,还必须非得到达叶节点。

时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 32M,其他语言64M 热度指数:589567 本题知识点: 树 算法知识视频讲解 题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输…

STR[#6]

photo 小明在旅游的路上看到了一条美丽的河,河上有许多船只,有的船只向左航行,有的船只向右航行。小明希望拍下这一美丽的风景,并且把尽可能多的船只都完整地拍到一张照片中。 小明位于河的边上,并且可以在河边的任意位…

爬虫Larbin解析(一)——Larbin配置与使用

介绍 功能:网络爬虫 开发语言:c 开发者:Sbastien Ailleret(法国) 特点:只抓取网页,高效(一个简单的larbin的爬虫可以每天获取500万的网页) 安装 安装平台:Ubu…

说说nginx,iis,apache,tomcat

一、nginx ngnix是反向代理服务器,它是代理,本身并不执行,是个传话筒,把用户提交的请求转发给web服务器,再把web服务器的结果转发给用户。为了提高性能,启用反向代理,实际的web服务器可以有很多…

navicate远程访问ubuntu上的mysql数据库

安装mysql 首先检查系统中是否已经安装了MySQL,在终端里面输入: sudo netstat -tap | grep mysql 如上所示就是正确安装并启动,启动命令为 sudo /etc/init.d/mysql start 如果没有安装,则安装MySQL,在终端输入 &#x…

二叉搜索树与双向链表与树的中序线索化

时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 32M,其他语言64M 热度指数:418309 本题知识点: 链表 树 算法知识视频讲解 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表…

Ali OSS 服务端签名并设置回调,客户端上传文件

一.最近做阿里云oss文件上传开发,一点收获分享给大家,帮助大家绕过一些坑。关于阿里云oss服务的介绍,我这里不做赘述了,可以查看阿里云OSS开发api文档。 在这里我主要介绍下,文件上传流程比较复杂的服务器设置回调功能…

[GO]二进制文件的拷贝

writestring的方式只适用于字符串的写入,对于十进制文件的写入只要使用write就可以了 package mainimport ("os""fmt""io" )func main() {list : os.Argsif len(list) ! 3 {fmt.Println(" usage: xxx srcFile dstFile")ret…