`

java内存管理和GC原理学习

阅读更多
java内存分为堆内存,永久存储区(方法区)内存,栈内存(虚拟机栈,程序计数器,本地方法栈)等。
    堆内存分为新生代,老生代,新生代分为eden区,survivor0,survivor1区,堆内存由XX:Xmx,XX:Xms设置。新生代内存由XX:Xmn设置或者XX:NewSize;XX:MaxNewSize设置。
    永久存储区用来存储class类,常量等信息,由XX:PermSize或者XX:MaxPermSize设置。
    栈内存是每个线程都有一个栈,栈大小是有XX:Xss设置的,相等条件下xss越小,生成的线程数量就越多。
    GC分为yong gc 和full gc,young gc是将对象在新生代内存移动并且移到老生代,full gc将回收新生代和老生代的对象。
    设置JVM参数如下:
                <jvm-arg>-Xmx2048M</jvm-arg>
                <jvm-arg>-Xms2048M</jvm-arg>
                <jvm-arg>-XX:NewSize=800M</jvm-arg>
                <jvm-arg>-XX:MaxNewSize=800M</jvm-arg>
                <jvm-arg>-XX:+PrintGCDateStamps</jvm-arg>
                <jvm-arg>-XX:+PrintHeapAtGC</jvm-arg>      
                <jvm-arg>-XX:+PrintGCDetails</jvm-arg>
                <jvm-arg>-loggc:/home/work/gamesdk/gamesdk_log/online/gc.log</jvm-arg>

                <jvm-arg>-Xss512k</jvm-arg>
                <jvm-arg>-XX:+UseCMSInitiatingOccupancyOnly</jvm-arg>
                <jvm-arg>-XX:CMSInitiatingOccupancyFraction=70</jvm-arg>
                <jvm-arg>-XX:+UseConcMarkSweepGC</jvm-arg>
                <jvm-arg>-XX:+UseCMSCompactAtFullCollection</jvm-arg>
                <jvm-arg>-XX:+CMSParallelRemarkEnabled</jvm-arg>
                <jvm-arg>-XX:+DisableExplicitGC</jvm-arg>
                <jvm-arg>-Xnoclassgc</jvm-arg>
                <jvm-arg>-Duser.dir=/home/work/gamesdk</jvm-arg>

    GC日志会生成如下格式,含义如下:
[GC 488.096(时间戳): [ParNew(新生代内存回收): 672269K(新生代原内存)->16513K(回收后内存)(737280K(总内存大小,不包含suivivor2)), 0.0350340(回收时间) secs] 1370470K(堆区回收前内存)->714812K(堆区回收后内存)(2015232K(堆区总内存,不包含suvivor2区)), 0.0365730(回收时间) secs] [Times: user=0.10(young gc用户耗时) sys=0.01(young gc系统耗时), real=0.03 secs(GC实际耗时)]

参考文章:
http://blog.csdn.net/huangzhaoyang2009/article/details/11860757
http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html
http://www.ibm.com/developerworks/cn/java/j-lo-jvm-perf/
分享到:
评论

相关推荐

    优秀的Java程序员必须了解GC的工作原理

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

    JVM GC原理深入学习.pdf

    同时,为了能更深入理解与之相关的知识点,本文特地编写了“第二章 基础知识”,详细的讲解与GC学习相关的JVM架构、JVM选项、Object内存布局、指针压缩等内容,以便读者能更加清晰的理解GC原理的底层逻辑。

    JVM内存管理及GC原理调优实战

    JVM调优是一个系统而又复杂的过程,由于Java虚拟机自动管理内存,在大多数情况下,我们基本上不用去调整JVM内存分配,因为一些初始化参数已经可以保证应用服务正常稳定地工作。但是当有性能问题的时候该怎么去调优,...

    java实现内存动态分配

    虽然Java中所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在栈中分配,也就是说在建立一个对象时在堆和栈中都分配内存,在堆中分配的内存实际存放这个被创建的对象的本身,而在栈中分配的内存只是存放...

    深入理解JVM内存结构及运行原理全套视频加资料

    2019最新深入理解JVM内存结构及运行原理(JVM调优)高级核心课程视频教程下载。JVM是Java知识体系中的重要部分,对JVM底层的了解是每一位Java程序员深入Java技术领域的重要因素。本课程试图通过简单易懂的方式,系统...

    Java程序内存泄漏研究.pdf

    java有比较安全的内存管理机制,垃圾回收器(GC)会自动地对无用的内存空间进行回收,但是GC并不能回收所有的垃圾空间,仍然存在着内存泄漏。本文从GC的工作原理入手,详细分析了产生内存泄漏的原因,讨论了几种典型内存...

    JAVA面试核心知识点整理283页-2020.pdf.zip

    jvm内存分区,gc算法,类加载机制。并发编程,并发编程各大容器,锁。框架spring mybatis原理,组件介绍。架构设计有设计模式,负载均衡。网络有协议,java 高并发io框架netty。数据结构包括堆栈,队列,链表,...

    Java笔试题大集合及答案.doc

    通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行...

    JVM性能调优-JVM内存整理及GC回收

    很好的学习资料,很详细的讲述了JVM性能调优,JVM内存模型,垃圾回收原理算法等等,很适合JAVA程序员阅读。

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    关于java程序员发展需要学习的路线整理集合 技术 应用技术 计算机基础知识 cpu mem disk net 线程,进程 第三方库 poi Jsoup zxing Gson 数据结构 树 栈 链表 队列 图 操作系统 linux 代码控制...

    android内存分析

    Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似。程序员通过new为对象分配内存,所有对象在java堆内分配空间;然而对象的释放是由垃圾回收器来完成的。C/C++中的内存机制是“谁污染,谁...

    深入理解java虚拟机视频教程

    深入理解java虚拟机视频教程,jvm原理,java虚拟机,jvm性能调优,内存模型,gc工作原理,内存分配,类的加载等等视频教程

    Java笔试题目.doc

    通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行...

    java垃圾回收知识全集

    Java 垃圾回收(Garbage Collection,简称 GC)是现代编程语言中的重要特性,为开发人员提供了自动化内存管理的能力。它通过自动识别和回收不再使用的内存,减轻了程序员手动释放内存的负担,提高了应用程序的稳定性...

    Java进阶教程解密JVM视频教程

    彻底分析 StringTable的相关知识与性能优化,掌握直接内存分配原理和释放手段。 * 在垃圾回收章节,不仅会介绍垃圾回收算法、分代垃圾回收机制,还会重点介绍 G1 垃圾回收器,辨析 Full GC 发生条件,jdk8以来对垃圾...

    JAVA面试核心知识点整理.rar

    jvm内存分区,gc算法,类加载机制。并发编程,并发编程各大容器,锁。框架spring mybatis原理,组件介绍。架构设计有设计模式,负载均衡。网络有协议,java 高并发io框架netty。数据结构包括堆栈,队列,链表,...

    python垃圾回收机制(GC)原理解析

    这篇文章主要介绍了python垃圾回收机制(GC)原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下  今天想跟大家分享的是关于python的垃圾回收机制,虽然本人...

    各大公司Java后端开发面试题总结.pdf

    内容概要:涵盖各大公司Java后端开发面试的常见考点,例如:Java内存模型、java GC、Synchronized 与Lock锁、java集合、线程池、Spring的IOC等等。帮助你系统复习并掌握核心知识。 适用人群:Java后端开发工程师、...

    深入理解JVM内存结构及运行原理全套视频加资料.txt

     第28讲 Java内存区域-直接内存和运行时常量池 00:15:53  第29讲 对象在内存中的布局-对象的创建 00:21:19  第30讲 探究对象的结构 00:13:47  第31讲 深入理解对象的访问定位 00:08:01  第32讲 垃圾回收-...

Global site tag (gtag.js) - Google Analytics