JVM
文章平均质量分 85
郭龙_Jack
这个作者很懒,什么都没留下…
展开
-
Android 之 内存管理
http://blog.csdn.net/xieqibao/article/details/6707519概述在android的开发中,要时刻主要内存的分配和垃圾回收,因为系统为每一个dalvik虚拟机分配的内存是有限的,在google的G1中,分配的最大堆大小只有16M,后来的机器一般都为24M,实在是少的可怜。这样就需要我们在开发过程中要时刻注意。不要因为自己的代码问题而造成OOM转载 2015-12-29 16:23:30 · 323 阅读 · 0 评论 -
JVM调优总结(一)-- 一些概念
http://pengjiaheng.iteye.com/blog/518623数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,i转载 2017-11-06 13:26:09 · 134 阅读 · 0 评论 -
JVM调优总结(二)-一些概念
http://pengjiaheng.iteye.com/blog/519471Java对象的大小 基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:Object ob = new O转载 2017-11-06 13:28:34 · 188 阅读 · 0 评论 -
JVM调优总结(三)-基本垃圾回收算法
http://pengjiaheng.iteye.com/blog/520228可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。转载 2017-11-06 13:29:40 · 161 阅读 · 0 评论 -
JVM调优总结(四)-垃圾回收面临的问题
http://pengjiaheng.iteye.com/blog/523230如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪转载 2017-11-06 13:30:32 · 199 阅读 · 0 评论 -
JVM调优总结(五)-分代垃圾回收详述1
http://pengjiaheng.iteye.com/blog/524024为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对转载 2017-11-06 13:31:25 · 150 阅读 · 0 评论 -
JVM调优总结(六)-分代垃圾回收详述2
http://pengjiaheng.iteye.com/blog/528034分代垃圾回收流程示意 选择合适的垃圾收集算法串行收集器 用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高。但是,也无法使用多处理器的优势,所以此收集器适合单处理器机器。当然,此收集器也可以用在小数据转载 2017-11-06 13:32:34 · 163 阅读 · 0 评论 -
JVM调优总结(七)-典型配置举例1
http://pengjiaheng.iteye.com/blog/538582以下配置主要针对分代垃圾回收算法而言。 堆大小设置年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在转载 2017-11-06 13:33:37 · 139 阅读 · 0 评论 -
JVM调优总结(八)-典型配置举例2
http://pengjiaheng.iteye.com/blog/545015常见配置汇总 堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4转载 2017-11-06 13:34:37 · 149 阅读 · 0 评论 -
JVM调优总结(九)-新一代的垃圾回收算法
http://pengjiaheng.iteye.com/blog/548472垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的转载 2017-11-06 13:35:33 · 129 阅读 · 0 评论 -
JVM调优总结(十)-调优方法
http://pengjiaheng.iteye.com/blog/552456JVM调优工具Jconsole,jProfile,VisualVMJconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。详细说明参考这里转载 2017-11-06 13:36:39 · 571 阅读 · 0 评论 -
jdk - concurrent并发包 - AbstractQueuedSynchronizer
package java.util.concurrent.locks;import java.util.*;import java.util.concurrent.*;import java.util.concurrent.atomic.*;import sun.misc.Unsafe;/**提供一个框架,基于先进行出等待队列,实现了阻塞锁和相关同步器(信号量,事件原创 2017-11-20 20:55:32 · 282 阅读 · 0 评论 -
类死循环代码定位
现象:程序偶尔长时间CPU飙高。一般诊断:程序代码中有cpu密集型计算代码,这段代码在某种条件下触发时,造成cpu升高。http://10.10.39.59:9033/ape-springmvc-openapi/demo/sayhello/yyyyyyppp示例为,这个链接的后台代码有类死循环代码,为定位到代码位置,执行下面的四个步骤:1.top 找到cpu消转载 2017-11-15 22:03:41 · 573 阅读 · 0 评论 -
GC算法 垃圾收集器
https://www.cnblogs.com/ityouknow/p/5614961.html概述垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存转载 2017-12-01 13:55:27 · 158 阅读 · 0 评论 -
GC之详解CMS收集过程和日志分析
转自:http://www.cnblogs.com/zhangxiaoguang/p/5792468.html参考:(1)http://blog.csdn.net/fenglibing/article/details/6321453 (2)http://www.cnblogs.com/wjoyxt/p/3727331.html2016-08转载 2017-12-01 17:13:00 · 668 阅读 · 0 评论 -
Java GC 日志详解
http://blog.csdn.net/alivetime/article/details/6895537java GC日志可以通过 +PrintGCDetails开启以ParallelGC为例YoungGC日志解释如下(图片源地址:这里) :FullGC(图片源地址:这里):一目了然,一图胜千言转载 2017-11-27 00:34:10 · 214 阅读 · 0 评论 -
一次CMS GC问题排查过程(理解原理+读懂GC日志)
http://iamzhongyong.iteye.com/blog/1989829这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下。这篇文章分三部分:1、问题的场景和处理过程;2、GC的一些理论东西;3、看懂GC的日志先说一下问题吧问题场景:线上机器在半夜会推送一个700M左右的数据,这个时候有个数据置换的过程,也就转载 2017-11-27 16:35:08 · 282 阅读 · 0 评论 -
jvm工具看内存泄露
实验的示例代码附在最后(jvisualvm , Jconsole- jdk8)内存泄露通常表现为,使用的内存不断增长。如果看到的类实例数,非java包类排在前10,就可能会有问题。结合jdk工具对长时间运行的j应用程序监控得到的数字,进行分析。实验vm 参数:-Xms3072M -Xmx3072M -Xmn512M -XX:+UseConcMarkSweepGC -XX:原创 2017-11-28 11:41:10 · 5701 阅读 · 2 评论 -
JVM调优总结(十二)-参考资料
http://pengjiaheng.iteye.com/blog/558620能整理出上面一些东西,也是因为站在巨人的肩上。下面是一些参考资料,供大家学习,大家有更好的,可以继续完善:) · Java 理论与实践: 垃圾收集简史 · Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tun转载 2017-11-07 09:26:31 · 154 阅读 · 0 评论 -
JVM调优总结(十一)-反思
垃圾回收的悖论 所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的相应时间,造成拥塞或堆积。这也是后续JDK增加G1算法的一个重要原因。 当然,上面是从技术角度出发解决垃圾回收带来转载 2017-11-07 09:25:41 · 141 阅读 · 0 评论 -
jvm 堆栈方法区数据存放和操作流程
http://chengjianxiaoxue.iteye.com/blog/2153147栈: 1 基础数据类型 byte short int long float double char boolean 2 方法的形式参数,方法调用完后从栈空间回收 3 引用对象的地址,引用完后,栈空间地址立即被回收,堆空间等待GC a) 栈内的数据线程之间独立 b转载 2015-12-17 18:26:31 · 1004 阅读 · 0 评论 -
java内存分配和String类型的深度解析
http://my.oschina.net/xiaohui249/blog/170013摘要 从整体上介绍java内存的概念、构成以及分配机制,在此基础上深度解析java中的String类型,从内存分配情况来解析String对象的特性。java内存 String StringBuffer StringBuilder 一、引题 在ja转载 2015-08-25 15:02:43 · 444 阅读 · 0 评论 -
在运行期通过反射了解JVM内部机制
http://www.importnew.com/8631.html在日常工作中,我们都习惯直接使用或者通过框架使用反射。在没有反射相关硬编码知识的情况下,这是Java和Scala编程中使用的类库与我们的代码之间进行交互的一种主要手段。但是,使用反射仅限于JVM内部运行的Java和Scala代码。假使在运行期通过反射既能查看自己的代码又能看到JVM的代码,会有怎样的效果呢 ?当我们开始转载 2015-08-25 09:03:36 · 432 阅读 · 0 评论 -
jmap-permstat-takes-long-time-and-hangs
http://stackoverflow.com/questions/25398588/jmap-permstat-takes-long-time-and-hangsWe started seeing 'java.lang.OutOfMemoryError: PermGen space'. In order to findout what is held i转载 2015-08-24 18:47:19 · 623 阅读 · 0 评论 -
Garbage Collection in the Java HotSpot Virtual Machine
http://www.devx.com/Java/Article/21977Keeping sensitive information private is paramount to document security. Prizm Content Connect comes with redaction and watermarking c转载 2015-08-24 11:10:29 · 592 阅读 · 0 评论 -
jmap命令详解
1、命令基本概述Jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。使用方法 jmap -histo pid。如果使用SHELL ,可采用jmap -histo pid>a.log日志将其保存到文件中,在一段时间后,使用文本对比工具,可以对比出GC回收了转载 2015-08-24 09:32:04 · 636 阅读 · 0 评论 -
Java theory and practice: Fixing the Java Memory Model, Part 1
http://www.ibm.com/developerworks/library/j-jtp02244/index.htmlJava theory and practice: Fixing the Java Memory Model, Part 1What is the Java Memory Model, and how was it broken in the转载 2015-12-20 08:57:34 · 817 阅读 · 0 评论 -
Java字节码简单介绍
http://www.cnblogs.com/royi123/p/3570003.htmlJava字节码简单介绍 转载来自首先了解一下理论知识:字节码:Class文件是8位字节流,按字节对齐。之所以称为字节码,是因为每条指令都只占据一个字节,所有的操作码和操作数都是按字节对齐的。如:0×03表示iconst_0Class文件的头4个字节称为魔数(Magic Numb转载 2015-05-05 19:36:35 · 478 阅读 · 0 评论 -
Java Virtual Machine
http://homepages.ius.edu/RWISMAN/C431/html/JVM.htmJava Virtual Machinepowered by FreeFind Modified: 10/19/2005 05:28:44ONLINE RESOURCE转载 2015-04-28 14:40:40 · 546 阅读 · 0 评论 -
Java theory and practice: Fixing the Java Memory Model, Part 2
http://www.ibm.com/developerworks/library/j-jtp03304/Java theory and practice: Fixing the Java Memory Model, Part 2How will the JMM change under JSR 133?JSR 133, which has be转载 2015-12-20 08:58:25 · 504 阅读 · 0 评论 -
JSR 133 (Java Memory Model) FAQ
https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.htmlJSR 133 (Java Memory Model) FAQJeremy Manson and Brian Goetz, February 2004Table of ContentsWhat is a memory model, anyway?Do转载 2015-12-20 08:55:14 · 775 阅读 · 0 评论 -
VM调优总结
http://my.oschina.net/shootercn/blog/15393一、相关概念基本回收算法引用计数(Reference Counting)比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep)此算法转载 2015-12-23 00:15:17 · 437 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
https://my.oschina.net/feichexia/blog/196575摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java转载 2016-12-25 20:16:49 · 1741 阅读 · 0 评论 -
JVM内幕:Java虚拟机详解
http://www.importnew.com/17770.html这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守 Java SE 7 规范的典型的 JVM 核心内部组件。 上图显示的组件分两个章节解释。第一章讨论针对每个线程创建的组件,第二章节讨论了线程无关组件。线程JVM 系统线程每个线程相关的程序计数器栈本地栈栈限转载 2017-01-17 19:31:49 · 451 阅读 · 0 评论 -
JVM内存管理及垃圾回收
http://lib.csdn.net/article/12/49149?knId=201本博客永久更新,如有转载,请说明出处:http://blog.csdn.net/zhangerqing如有问题,请联系本人: egg邮箱:xtfggef@gmail.com微博:http://weibo.com/xtfggef一、JVM内存的构Jav转载 2017-04-23 20:57:21 · 313 阅读 · 0 评论 -
JAVA进程和linux内存间的大小关系
http://www.cnblogs.com/springsource/p/6097736.html运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] args) { System.out.println("sl转载 2017-08-15 13:36:50 · 693 阅读 · 0 评论 -
了解 CMS 垃圾回收日志
http://ifeve.com/jvm-cms-log/原文地址 作者: poonam 译者:严亮 校对:梁海舰在CMS GC 时,使用参数-XX:+PrintGCDetails 和 -XX:+PrintGCTimeStamps 会输出很多日志信息,了解这些信息可以帮我们更好的调整参数,以获得更高的性能。我们来看下在JDK1.4.2_10 中CMS GC日志示例:转载 2017-11-27 17:47:52 · 351 阅读 · 0 评论