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编程中至关重要的一部分,它关乎程序的性能、稳定性和资源管理。本文将深入探讨Java虚拟机(JVM)中的内存划分、垃圾收集的工作原理以及相关工具的使用。 1. **Java内存区域...
总的来说,理解Java的GC工作原理对于优化代码性能和解决内存问题至关重要。通过阅读源码、使用分析工具和调整JVM参数,Java程序员能够更深入地掌握GC,从而编写出更加高效和稳定的程序。同时,学习如Apache Mina这样...
在深入探讨JAVA内存设置原理之前,我们先理解一下JVM(Java虚拟机)的内存管理机制。JVM是JAVA运行时环境的核心,它负责执行JAVA字节码,同时管理程序运行时的内存分配与回收。JVM的内存模型主要由以下几个部分组成...
Java内存管理是Java核心技术的重要组成部分,对于每个开发者来说,理解其工作原理都是十分必要的。这一主题既实用又有趣。以下是对Java内存管理的精彩概述,主要基于Sun Hotspot JVM,但请注意,不同JVM可能有不同的...
Java内存管理的原理是Java开发中的重要组成部分,它关乎到应用程序的性能和稳定性。Java虚拟机(JVM)负责自动管理内存,包括对象的分配和回收,以减轻开发人员的负担。然而,深入理解这些原理可以帮助优化代码,...
Java内存管理是Java编程中至关重要的一环,它与C++等其他语言的内存管理机制有着显著的区别。在C++中,程序员需要手动管理内存,包括分配和释放,而在Java中,这一过程则由Java虚拟机(JVM)自动进行,通过垃圾收集...
Java内存管理是Java编程中的核心概念...了解并掌握Java内存管理有助于优化应用程序性能,避免内存泄漏,理解垃圾收集的工作原理,以及如何通过调整JVM参数来改善系统性能。对于Java开发者来说,这些都是必备的知识点。
再者,GC原理涉及到垃圾收集算法,主要包括分代收集算法和分区收集算法。分代收集算法是目前主流的收集方式,它将堆内存分为新生代和老年代,根据对象的存活周期不同,采用不同的收集策略。新生代采用复制算法,因为...
Java内存管理是Java编程中的关键概念,它涉及到对象的分配和释放,主要依赖于Java虚拟机(JVM)的垃圾收集机制(Garbage Collection, GC)。Java内存分为堆内存(Heap)和栈内存(Stack),其中对象主要在堆中分配,...
通过对GC原理的理解和合理配置,开发者可以有效地管理Java应用的内存使用,提高应用的性能和稳定性。无论是增量式GC还是分代收集策略,都是为了更好地适应不同应用场景的需求,实现最优的内存管理方案。
【JAVA内存结构】 Java内存结构主要分为五个主要区域:堆(JAVA HEAP)、虚拟机栈(JAVA VIRTUAL MACHINE STACKS)、本地方法栈(NATIVE METHOD STACK)、...理解这些内存结构和GC原理对于优化Java应用性能至关重要。
### Java内存管理概述 ...为了深入了解Java内存管理和垃圾收集器的工作原理,建议参考Sun Microsystems提供的官方文档和其他技术资源。此外,还可以探索社区论坛和技术博客,获取更多的实践经验和技巧。
Java内存管理是Java编程中的核心概念,它涉及到程序运行时如何高效地分配、使用和回收内存。在Java中,内存管理主要由JVM(Java Virtual Machine)负责,其中包括了垃圾收集机制,确保程序不会因为内存泄漏而导致...
Java内存分配原理是Java编程中的重要一环,它关乎到程序的性能、稳定性和资源管理。深入理解这一主题,能够帮助开发者编写出更高效、更稳定的代码。在Java中,内存分为堆内存、栈内存、方法区(在Java 8之后被元空间...
Java内存管理是编程中至关重要的一个环节,尤其是对于大型、长时间运行的应用来说,内存泄漏和内存无法回收可能导致系统性能下降,甚至导致系统崩溃。本文将深入探讨Java内存泄露的原理,分析内存无法回收的原因,并...
Java内存泄露检测是Java...总之,Java内存泄露检测是一个涉及编程规范、内存管理原理、内存泄露类型以及检测方法的综合问题。通过深入理解和实践,开发者可以有效地防止和解决内存泄露问题,提高程序的健壮性和性能。
同时,为了能更深入理解与之相关的知识点,本文特地编写了“第二章 基础知识”,详细的讲解与GC学习相关的JVM架构、JVM选项、Object内存布局、指针压缩等内容,以便读者能更加清晰的理解GC原理的底层逻辑。
Java虚拟机的内存管理是Java程序运行的关键组成部分,它通过一系列复杂的机制确保程序的高效运行和内存的有效利用。...通过深入学习和实践,开发者能够更好地驾驭Java内存,避免出现因内存管理不当导致的问题。
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是Java内存管理的关键组成部分。了解GC的工作原理对于优化Java程序至关重要,尤其是在那些对性能有着极高要求的应用场景中,如嵌入式系统或实时系统。下面...