内存划分

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

【GC概述以及查看堆内存使用】Java内存管理和GC学习的更多相关文章

  1. JVM自动内存管理-Java内存区域与内存溢出异常

    摘要: JVM内存的划分,导致内存溢出异常的可能区域. 1. JVM运行时内存区域 JVM在执行Java程序的过程中会把它所管理的内存划分为以下几个区域: 1.1 程序计数器 程序计数器是一块较小的内 ...

  2. JRockit检测Tomcat内存溢出JAVA内存泄漏问题

    http://blog.csdn.net/liyanhui1001/article/details/8240473 公司的一个Java应用系统上线以来,基本每1天OutOfMemoryError: P ...

  3. 【转】Java 内存模型及GC原理

    一个优秀Java程序员,必须了解Java内存模型.GC工作原理,以及如何优化GC的性能.与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率,才能 ...

  4. Java 内存模型及GC原理 (转载)

    一个优秀Java程序员,必须了解Java内存模型.GC工作原理,以及如何优化GC的性能.与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率,才能 ...

  5. java中栈内存与堆内存(JVM内存模型)

    java中栈内存与堆内存(JVM内存模型) Java中堆内存和栈内存详解1 和 Java中堆内存和栈内存详解2 都粗略讲解了栈内存和堆内存的区别,以及代码中哪些变量存储在堆中.哪些存储在栈中.内存中的 ...

  6. Java内存溢出优化性能优化

    高性能应用构成了现代网络的支柱.LinkedIn有许多内部高吞吐量服务来满足每秒数千次的用户请求.要优化用户体验,低延迟地响应这些请求非常重要. 比如说,用户经常用到的一个功能是了解动态信息——不断更 ...

  7. 全面理解Java内存模型(JMM)及volatile关键字(转载)

    关联文章: 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解Java类加载器(ClassLoad ...

  8. 全面理解Java内存模型(JMM)及volatile关键字

    [版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/72772461 出自[zejian ...

  9. Java内存管理-JVM内存模型以及JDK7和JDK8内存模型对比总结(三)

    勿在流沙住高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇分享了JVM及其启动流程,今天介绍一下JVM内部的一些区域,以及具体的区域在运行 ...

随机推荐

  1. Linux学习之02_Linuxd的文件权限与目录配置

    这里一些基本介绍就不介绍了,还是来介绍一下相关的命令 这一节重要的命令有这些: chgrp chown chmod 1.改变文件属性和权限 chgrp----改变文件所属用户组 chown----改变 ...

  2. Java多线程(二) synchronized 针对对象进行锁定

    http://www.cnblogs.com/QQParadise/articles/5059824.html 1.方法内的变量为线程安全的 2.实例变量非线程安全的 public class Has ...

  3. [SDOI2013]泉

    题目描述 作为光荣的济南泉历史研究小组中的一员,铭铭收集了历史上x个不同年份时不同泉区的水流指数,这个指数是一个小于. 2^30的非负整数.第i个年份时六个泉区的泉水流量指数分别为 A(i,l),A( ...

  4. AOP面向方面编程---postsharp

    PostSharp是一个用于在.NET平台上实现AOP(Aspect-Oriented Programming,面向方面编程)的框架,现通过简单的示例代码来演示如何使用postsharp. 1.新建一 ...

  5. python如何添加浏览器驱动路径

    闲来无事,整一整python+selenium,写完代码后运行发现找不到webdriver的路径:之前是仿照java一样直接把webdriver放到浏览器的安装目录下 迫于无奈,只好查一下问题如何处理 ...

  6. 全面学习ORACLE Scheduler特性(4)创建和管理Schedule

    三.使用Schedules 10g 中新推出的SCHEDULER可能确实会让很多初接触的朋友感觉晕头晕脑,相比之前的jobs,SCHEDULER中新增的概念太多.比如说jobs,仍然可以理解成之前版本 ...

  7. 2106. [NOIP2015] 斗地主

        2106. [NOIP2015] 斗地主 ★★★☆   输入文件:landlords.in   输出文件:landlords.out   简单对比 时间限制:2 s   内存限制:1025 M ...

  8. Docker在Ubuntu16.04上安装

    转自:http://blog.51cto.com/collen7788/2047800 1.添加Docker源 sudo apt-get update 2.增加CA证书 sudo apt-get in ...

  9. 继续C#开发or转做产品

    本人今年大四,C#开发,在一家公司实习了一年后,面临一个选择,是继续C#开发还是转做产品?我C#开发能力目前还一般,但很有兴趣.也喜欢设计与创意,做过产品专员.求大婶们指导!

  10. Redis 注册为 widows 服务

    redis-server.exe --service-install redis.windows.conf --loglevel verbose