项目组最近在开发中经常会出现一些意想不到的内存溢出问题。下面我就说说我们常见的几种内存溢出吧!1.JVM Heap(堆)溢出:java.lang.OutOfMemoryError: Java heap spaceJVM在启动的时候会自动设置JVM Heap的值, 可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap的大小是Young Generation 和Tenured G...
分类:
编程语言 时间:
2015-09-17 17:37:08
阅读次数:
233
jvm的垃圾回收是个老生常谈的问题,在这里,我会从以下一个方面来和大家聊聊垃圾回收。
1 在哪里收垃圾?
2 哪些内容可认为是垃圾?
3 怎么回收垃圾?
4 gc报告的阅读
在哪里收垃圾
这里,我建议大家先读一下拙作: java内存管理
上图中的5部分:
虚拟机栈,本地方法栈,程序计数器三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行...
分类:
编程语言 时间:
2015-08-20 13:17:52
阅读次数:
209
java堆内存结构图【名词解释】--->eden,so,s1通称为新生代对象存储区--->tenured称为老年代对象存储区--->s0和s1也称为from和to区域,是两块大小相等,可以互换角色的内存空间。【行为解释】--->绝大数情况下,对象首先分配在eden区--->每进行一次垃圾回收,如果对...
分类:
编程语言 时间:
2015-08-16 18:02:50
阅读次数:
158
最近因项目存在内存泄漏,故进行大规模的JVM性能调优?,?现把经验做一记录。 一、JVM内存模型及垃圾收集算法 ?1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) ? ...
分类:
其他好文 时间:
2015-07-26 19:25:43
阅读次数:
275
分几个帖子 跟大家一起学习一下内存分析的方法。这次先来聊聊为什么会发生内存泄漏:我们知道JVM根据generation(代)来进行GC,一共被分为young generation(年轻代)、tenured generation(老年代)、permanent generation(永久代, perm ...
分类:
其他好文 时间:
2015-07-22 12:51:20
阅读次数:
112
分几个帖子 跟大家一起学习一下内存分析的方法。这次先来聊聊为什么会发生内存泄漏:我们知道JVM根据generation(代)来进行GC,一共被分为young generation(年轻代)、tenured generation(老年代)、permanent generation(永久代, perm ...
分类:
其他好文 时间:
2015-05-20 21:56:39
阅读次数:
156
Sun的JVMGenerationalCollecting(垃圾回收)原理是这样的:把对象分为年青代(Young)、年老代(Tenured)、持久代(Perm),对不同生命周期的对象使用不同的算法。(基于对对象生命周期分析)1.Young(年轻代)年轻代分三个区。一个Eden区,两个Survivor...
分类:
编程语言 时间:
2015-05-09 13:01:12
阅读次数:
109
Java垃圾回收精粹分4个部分,本篇是第1部分。在第1部分里介绍了权衡点、对象生命周期以及全局暂停事件。串行、并行、并发、CMS、G1、年轻代(Young Gen)、新生代(New Gen)、旧生代(Old Gen)、持久代(Perm Gen)、伊甸区(Eden)、年老区(Tenured)、幸存区(...
分类:
编程语言 时间:
2015-04-19 16:03:36
阅读次数:
140
当使用CMS收集器时,当开始进行收集时,old代的收集过程如下所示:1,首先jvm根据-XX:CMSInitiatingOccupancyFraction,-XX:+UseCMSInitiatingOccupancyOnly来决定什么时间开始垃圾收集;2,如果设置了-XX:+UseCMSInitia...
分类:
其他好文 时间:
2015-04-08 16:19:19
阅读次数:
103
最前面的数字“33.125”和“100.667”代表了GC发生的时间。GC日志开头的[GC和[Full GC说明了这次垃圾收集的停顿类型,而不是用来区分新生代GC还是老年代GC的。[DefNew、[Tenured、[Permz表示GC发生的区域后面方括号内部的3324K->152K(3712K)含义...
分类:
其他好文 时间:
2015-03-30 00:52:09
阅读次数:
192