javaGC
文章平均质量分 79
代老师的编程课
本博客不再维护,搬家到 http://zthinker.com。个人公众号(Java码界探秘)
展开
-
我和JVM初次约会
前言:该篇是参考结合,自己剔除添加了一些内容整理的而来,这里感谢的文章的指点讲解。JVM的生命周期 “JVM实例和JVM执行引擎实例,JVM实例对应了一个独立运行的Java程序,而JVM执行引擎实例对应了属于用户运行程序的线程;也就是JVM实例是进程级别,而执行引擎是线程级别的”。JVM实例的诞生:启动一个带有main方法的Java程序时,一个JVM实例就产生了,此时类转载 2014-02-23 21:37:12 · 568 阅读 · 0 评论 -
tomcat内存溢出总结
tomcat内存溢出总结转载 2010-08-24 10:24:00 · 514 阅读 · 0 评论 -
Java垃圾回收机制浅析
Java垃圾回收机制一般包含近十种算法。对这些算法中的多数,我们不必予以关心。只有其中最简单的一个:引用计数法,与编码有关。AD: 2013大数据全球技术峰会低价抢票中一.谁在做Garbage Collection? 在C++里,释放内存是手动处理的,要用delete运算符来释放分配的内存。这是流行的说法。确切地说,是转载 2013-05-12 19:06:31 · 498 阅读 · 0 评论 -
JVM调优总结:典型配置举例
原文出处:http://developer.51cto.com/art/201201/311739.htm 一篇非常棒的关于JVM性能调优的文章,转载用于自己经常查阅以下配置主要针对分代垃圾回收算法而言。堆大小设置年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物转载 2014-02-23 20:40:35 · 556 阅读 · 0 评论 -
利用Java heap dump查找、分析问题
http://autumnice.blog.163.com/blog/static/555200201143163723346/?fromdm&fromSearch&isFromSearchEngine=yes 开发、应用中老是会遇到OutOfMemory异常,而且常常是过一段时间内存才被吃光,这里可以利用java heap dump出jvm内存镜像,然后再对其进行分析来查找问题。转载 2014-02-11 10:37:18 · 2866 阅读 · 0 评论 -
Java GC 调试手记
摘要本文记录GC调试的一次实验过程和结果。GC知识要点回顾问题1:为什么要调试GC参数?在32核处理器的系统上,10%的GC时间导致75%的吞吐量损失。所以在大型系统上,调试GC是以小博大的不错选择。'small improvements in reducing such a bottleneck can produce large gains in perform转载 2014-02-10 17:25:55 · 689 阅读 · 0 评论 -
深入理解ReferenceQueue GC finalize Reference
关于对象如何销毁以及finalize更详细的信息 目录 概述 1 先看一个对象finalize的顺序问题。 2 对象再生及finalize只能执行一次 3 SoftReference WeakReference 4 PhantomReference 5 ReferenceQueue Q&A 概述 先说一些基本的东西,GC只负责对象内存相关转载 2014-02-10 16:01:15 · 531 阅读 · 0 评论 -
方法区回收过程与GC的并发与并行
主要回收废弃常量和无用的类废弃常量包括字面量、类或接口、方法、字段的符号引用等废弃指的是没有任何地方引用这个常量。无用的类满足的三个条件:1。没有该类的任何实例存在2。加载该类的ClassLoader已经被回收3。该类对应的java.lang.Class对象没有任何地方被引用,无法在任何地方通过反射反问该类的方法。而当满足这三个条件时,虚拟机仅仅是“可以”对这个类进转载 2014-02-14 21:40:36 · 1673 阅读 · 0 评论 -
Java中堆内存和栈内存详解
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器转载 2014-02-18 20:04:16 · 512 阅读 · 0 评论 -
jstat使用方法
Java代码 用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。 Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利转载 2014-02-15 10:03:30 · 876 阅读 · 0 评论 -
Java虚拟机学习 - 垃圾收集器
HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器。如果两个收集器之间存在连线,就说明它们可以搭配使用。Serial(串行GC)收集器Serial收集器是一个新生代收集器,单线程执行,使用复制算法。它在进行垃圾收集时,必须暂停其他所有的工作线程(用户线程)。是Jvm client模式下默认的新生转载 2014-03-15 15:04:07 · 647 阅读 · 0 评论 -
JVM的垃圾回收与内存分配
Java是一种内存动态分配和垃圾回收技术的一种语言,不需要显示的进行对象内存的分配,这一切操作都是由JVM来完成的,由于Java是“一切皆对象”的,所以对于内存分配的优化与速度非常的高效。在Java中一个对象在堆中的分配以及灭亡都是由JVM来完成的。JVM负责来垃圾回收与对象分配。一 垃圾回收 垃圾回收(Garbage Collection,GC),研究这个主要目的就是为了转载 2014-02-24 09:47:02 · 771 阅读 · 0 评论 -
JVM垃圾回收机制
每个Java程序员迟早都会碰到下面这个错误:java.lang.OutOfMemoryError这个时候一般会建议采用如下方式解决这个错误:增加MaxPermSize值增加最大堆内存到512M(-xmx参数)这篇文章会具体介绍Java堆空间和参数MaxPermSize的含义。这篇文章涉及下列主题,并采用Hotspot JVM:垃圾回收器(Ga转载 2014-03-14 18:58:35 · 545 阅读 · 0 评论 -
JVM调优总结
一、相关概念基本回收算法引用计数(Reference Counting)比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep)此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。转载 2014-02-19 10:06:04 · 601 阅读 · 0 评论 -
java应用详解
java应用详解文档介绍:1、nio应用(ServerSocketChannel、FileChannel)。2、优化jvm参数提升eclipse运行速度。3、maven3.0.3安装及入门例子。4、apache-ant-1.8.2安装及入门例子、jarjar的入门例子。5、gradle-1.0-milestone-3安装及配置。6、asm4入门例子。7、Be转载 2014-02-16 11:54:59 · 776 阅读 · 0 评论 -
通过jconsole查看tomcat运行情况的配置方法——基于JDK1.5、Linux(Redhat5.5)、Tomcat6
由于项目的原因,需要使用jconsole对tomcat进行远程监控,结合网上的资料对配置方法进行了总结。 第一步、配置tomcat打开%TOMCAT_HOME%/bin下的文件catalina.sh,搜索“JAVA_OPTS”找到下面这行: 在每个“JAVA_OPTS”后边都添加以下标黄代码段,且在一行显示:if [ -z "$LOGGING_转载 2014-02-15 14:04:35 · 802 阅读 · 0 评论 -
使用JConsole监控进程、线程、内存、cpu、类情况
Jconsole简介:Jconsole是一个JMX兼容的监视工具。它使用Java虚拟机的JMX机制来提供运行在Java平台的应用程序的性能与资源耗费信息。监控进程使用方法如下:由于JConsole监控需要使用JMX代理技术,因此在启动应用程序的参数中添加以下几个参数:-Djava.rmi.server.hostname=192.168.1.80-Dcom.sun.man转载 2014-02-16 11:18:44 · 1441 阅读 · 0 评论 -
JConsole 远程监控Tomcat服务
JConsole 远程监控Tomcat服务1、概述JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。如果要把一个应用以可管理的形式启动,可以在启动是设置com.sun.management.jmxremote。JConsole能够提供被监控虚拟机的内存、线程、类的加载以及MBean等信息,从而能够对服务器的运行情况进行实时监控。转载 2014-02-15 12:23:20 · 950 阅读 · 0 评论 -
从几个sample来学习Java堆,方法区,Java栈和本地方法栈
最近在看《深入理解Java虚拟机》,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构:感觉有必要通过几个实在的例子来加深对这几个区域的了解1)Java堆所有对象的实例分配都在Java堆上分配内存,堆大小由-Xmx和-Xms来调节,sample如下所示:转载 2014-02-23 15:33:25 · 688 阅读 · 0 评论 -
JVM性能优化, Part 3 —— 垃圾回收
ImportNew注:本文是JVM性能优化 系列-第3篇-《JVM性能优化, Part 3 —— 垃圾回收》第一篇 《JVM性能优化, Part 1 ―― JVM简介 》第二篇《JVM性能优化, Part 2 ―― 编译器》Java平台的垃圾回收机制大大提高的开发人员的生产力,但实现糟糕的垃圾回收器却会大大消耗应用程序的资源。本文作为JVM性能优化系列的第3篇,转载 2013-10-10 17:50:08 · 802 阅读 · 0 评论 -
Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器
1.Java对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再 把它捡回来使用就不可能了。转载 2014-02-10 15:31:03 · 617 阅读 · 0 评论 -
Java性能小技巧
局部决定整体。一个应用的整体性能取决于每个组件的性能。下面是一些帮助你提高应用性能的Java编程技巧:编程技巧原因及策略避免重复创建对象为什么:更少的对象会需要更少的垃圾回收使用的空间越少,应用的性能越好怎么做:重复利用一个对象,而不是在每次需要的时候都去创建一个功能一样的对象(这样做)转载 2014-01-20 21:33:28 · 465 阅读 · 0 评论 -
成为Java GC专家(4) — Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响
这是“成为Java GC专家系列文章”的第四篇。在第一篇文章 成为JavaGC专家Part I — 深入浅出Java垃圾回收机制 中我们学习了不同GC算法的执行过程,GC如何工作,新生代及老年代的基本概念,在JDK7中你应该了解的5种GC类型以及他们的性能如何。在第二篇文章 成为JavaGC专家Part II — 如何监控Java垃圾回收机制 中我们学到了JVM到底是如何执转载 2014-01-23 13:44:53 · 529 阅读 · 0 评论 -
Java深度历险(四)——Java垃圾回收机制与引用类型
Java语言的一个重要特性是引入了自动的内存管理机制,使得开发人员不用自己来管理应用中的内存。C/C++开发人员需要通过malloc/free 和new/delete等函数来显式的分配和释放内存。这对开发人员提出了比较高的要求,容易造成内存访问错误和内存泄露等问题。一个常见的问题是会产生“悬挂引用(dangling references)”,即一个对象引用所指向的内存区块已经被错误的回收并重新转载 2013-08-05 17:50:08 · 599 阅读 · 0 评论 -
JVM内存模型及内存分配过程
一、JVM内存模型JVM主要管理两种类型内存:堆(Heap)和非堆(Permanent区域)。1、Heap是运行时数据区域,所有类实例和数组的内存均从此处分配。Heap区分两大块,一块是 Young Generation,另一块是Old Generation: 1)在Young Generation中,有一个叫Eden Space的空间,主要是用来存放新生的对象,还有两个Su转载 2013-10-11 20:10:24 · 1076 阅读 · 0 评论 -
JAVA GC垃圾收集器的分析
在 很多人看来,java中内存的动态分配与内存回收已经不用用户担心了,因为它给我们提供了GC自动回收 ,感觉一切都进入了自动化了,但是对于各种内存溢出,内存泄漏问题的出现,我们还是很有必要学习GC的。地球人都知道,Java有个东西叫垃圾收集器,它 让创建的对象不需要像C/C++那样delete、free掉,但你能不能谈谈,GC是在什么时候,对什么东西,做了什么事情?” 如果还不是很了解那我们一起转载 2013-10-11 20:19:47 · 568 阅读 · 0 评论 -
JVM 性能优化, Part 4: C4 垃圾回收
ImportNew注:本文是JVM性能优化 系列-第4篇。前3篇文章请参考文章结尾处的JVM优化系列文章。作为Eva Andreasson的JVM性能优化系列的第4篇,本文将对C4垃圾回收器进行介绍。使用C4垃圾回收器可以有效提升对低延迟有要求的企业级Java应用程序的伸缩性。到目前为止,本系列的文章将stop-the-world式的垃圾回收视为影响Java应用程序伸缩性的一大障碍,而伸缩转载 2013-10-10 17:51:15 · 708 阅读 · 0 评论 -
性能调优、虚拟机、垃圾回收、软硬件协调相关文章和视频 — Part1
本文由 ImportNew - 顾星竹 翻译自 javacodegeeks。如需转载本文,请先参见文章末尾处的转载要求。ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Java开发 小组。参与方式请查看小组简介。最近好几个月,我一直在考虑整理性能调优、Java虚拟机(JVM)、Java垃圾回收(GC)、软硬件协调(Mechanial Sympathy)等转载 2014-01-24 20:30:38 · 600 阅读 · 0 评论 -
Java的内存管理3:"用ReferenceQueue代替finalize( )"
《Java的内存管理2》提到finalize方法延缓了GC在heap中对类实例的回收,尤其在JVM内存吃紧时,所幸的是这种延缓仅会发生一次。也正是因为finalize方法只会在GC首次打算回收该实例时被调用,因此finalize方法极大地不同于C++中的析构函数:当一个实例再次被JVM装入内存,直到它被销毁前,你无法在finalize方法中执行关闭文件连接等操作。在C++缓存管理过程中,程转载 2014-02-10 15:21:14 · 843 阅读 · 0 评论 -
Java的内存回收机制
在Java中,它的内存管理包括两方面:内存分配(创建Java对象的时候)和内存回收,这两方面工作都是由JVM自动完成的,降低了Java程序员的学习难度,避免了像C/C++直接操作内存的危险。但是,也正因为内存管理完全由JVM负责,所以也使Java很多程序员不再关心内存分配,导致很多程序低效,耗内存。因此就有了Java程序员到最后应该去了解JVM,才能写出更高效,充分利用有限的内存的程序。1.J转载 2013-05-16 23:17:14 · 625 阅读 · 0 评论 -
成为Java GC专家系列(3) — 如何优化Java垃圾回收机制
本文是成为Java GC专家系列文章的第三篇。在第一篇《成为JavaGC专家Part I — 深入浅出Java垃圾回收机制》中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响。在第二篇《成为JavaGC专家Part II — 如何监控Java垃圾回收机制》,我解释了JVM实际上是如何执行转载 2013-10-10 17:46:26 · 790 阅读 · 0 评论 -
解码OutOfMemoryError:PermGen Space
本文由 ImportNew - Peter Pan 翻译自 javacodegeeks。如需转载本文,请先参见文章末尾处的转载要求。ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Java开发 小组。参与方式请查看小组简介。垃圾回收是Java开发人员理解得最不彻底的地方之一。他们觉得既然JVM负责垃圾回收,那么便不必担心内存的分配跟回收等问题。但是当转载 2014-01-24 20:32:36 · 596 阅读 · 0 评论 -
JDK7新特性之G1 GC
Garbage-first garbage collector,简称G1 GC,是最终将用于代替Concurrent Mark-Sweep garbage collector(CMS GC)的新一代垃圾回收器。原本的计划是作为JDK7新特性的一部分发布,但其后JDK7一直在坚持不懈的跳票,G1也无法再等下去了。目前JDK1.6update14及以后版本的jvm中已经继承了G1 GC,可以使用参数-转载 2014-02-11 10:04:09 · 2402 阅读 · 0 评论 -
成为JavaGC专家Part I — 深入浅出Java垃圾回收机制
对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用。这仅仅代表我个人的意见,但我坚信一个精通GC的人往往是一个好的Java开发者。如果你对GC的处理过程感兴趣,说明你已经具备较大规模应用的开发经验。如果你曾经想过如何正确的选择GC算法,那意味着你已经完全理解你所开发的应用的特点。当转载 2013-10-10 17:32:41 · 570 阅读 · 0 评论 -
话说ReferenceQueue
也是几年前写的,在内部邮件列表里发过,在这里保存一下。看到了这篇帖子: 《WeakHashMap的神话》http://www.javaeye.com/topic/587995因为Javaeye回帖还要先做个论坛小测验,所以懒得在上面回复了,在这里说下。以前设计缓存时也曾过用WeakHashMap来实现,对Java的Reference稍做过一些了解,其实这个问题,归根到底,是个J转载 2014-02-10 13:57:38 · 765 阅读 · 0 评论 -
Java的内存管理1:“并不只有C++程序员关心内存回收”——Java的内存管理2:"不中用的finalize( )方法"
通常Java的缓存管理会由垃圾回收器(Java Garbage Collection)定时处理,无须程序员操心。但Java Garbage Collection仅有权回收那些非“强引用”(Strong Reference)类型的类。也就是说,如果程序生成大量的强引用对象,JVM存放对象实例的“堆”(heap)容量不够时(默认64M,可设置),就会抛出java.lang.OutOfMemoryErr转载 2014-02-10 14:58:18 · 718 阅读 · 0 评论 -
SoftReference,WeakReference&WeakHashMap
zz http://java.chinaitlab.com/oop/716371.html在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再 把它捡回来使用就转载 2013-10-23 22:36:16 · 541 阅读 · 0 评论 -
JVM性能优化, Part 1 ―― JVM简介
众所周知,Java应用程序是运行在JVM上的,但是你对JVM有所了解么?作为这个系列文章的第一篇,本文将对经典Java虚拟机的运行机制做简单介绍,内容包括“一次编写,到处运行”的利弊、垃圾回收的基本原理、常用垃圾回收算法的示例和编译器优化等。后续的系列文章将会JVM性能优化的内容进行介绍,包括新一代JVM的设计思路,以及如何支持当今Java应用程序对高性能和高扩展性的要求。如果你是一名程序转载 2013-10-10 17:49:00 · 847 阅读 · 0 评论 -
Java垃圾回收器总结
什么是Java垃圾回收器Java垃圾回收器是Java虚拟机(JVM)的三个重要模块(另外两个是解释器和多线程机制)之一,为应用程序提供内存的自动分配(Memory Allocation)、自动回收(Garbage Collect)功能,这两个操作都发生在Java堆上(一段内存快)。某一个时点,一个对象如果有一个以上的引用(Rreference)指向它,那么该对象就为活着的(Live),否则转载 2014-01-19 21:42:25 · 495 阅读 · 0 评论 -
成为JavaGC专家Part II — 如何监控Java垃圾回收机制
本文是成为Java GC专家系列文章的第二篇。在第一篇《深入浅出Java垃圾回收机制》中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响。在本文中,我将解释JVM到底是如何执行垃圾回收处理的。什么是GC监控?垃圾回收收集监控指的是搞清楚JVM如何执行GC的过程,例如,我们可以查明转载 2013-10-10 17:44:48 · 767 阅读 · 0 评论