随笔分类 - JVM
软/弱/虚引用
摘要:https://www.jianshu.com/p/825cca41d962 引用的本质是,可以把jvm内存当做一个大的池化技术,池化技术最重要的是逐出策略。那么,这三种引用对应的逐出策略是不一样的,具体可以看上面链接里的介绍。简单来说,强引用的逐出策略是,如果一个对象没有了强引用,就逐出。软引用是
阅读全文
GC调优
摘要:Gc调优的目标:1.降低停顿时间 2.提高吞吐量 3.避免full-gc 调优可以使用的手段:1.各个内存区的大小调整:堆,年轻代,老年代,方法区等等2.减少短暂对象的存活时间,提高长期对象的复用率(对象池,cache,永久区等等),减少不必要的垃圾的生产。3.调整对象的晋升:晋升阈值,surviv
阅读全文
GC算法基础
摘要:寻找垃圾对象的算法:1. 引用计数(无法处理循环引用) 2. 根寻法(被广泛引用在gc算法中) 清理垃圾的算法: 1. 标记复制 2. 标记清理 3. 标记整理 分代算法的好处: 1. 分代处理,可以减少一次处理的内存大小,减少停顿时间。 2. 不同的代有不同的特点,再加上有针对性的gc算法和代码优
阅读全文
gc的real时间比user时间长
摘要:https://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1 https://blog.gceasy.io/2016/12/08/real-time-greater-t
阅读全文
Jit
摘要:Jit编译:just in time 编译. Java代码只有在执行一段时间以后才会进行jit编译。 Hotspot会编译优化那些热点代码,以求最大的性能收益。 Jit编译的好处: 1. 执行一段时间后,可以统计出哪些代码的调用频次高。 2. 执行一段时间后,编译器可以获得代码的一些性能信息,来加大
阅读全文
java性能分析工具
摘要:jcmd:向JVM发送诊断的命令,jvm未必会全部响应,有些需要在jvm开启相应功能才能响应。个人平时用的不是很多。 SampleA: 添加 jcmd pid VM.native_memory detail 查看jvm内存分配情况(堆内内存、Code区域或者使用unsafe.allocateMemo
阅读全文
Greys--JVM异常诊断工具
摘要:https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf 一、简介 我们平时在线上或者开发中会遇到各种性能、功能等问题,在运行过程中需要查看方法入参、返回值,或者方法执行的堆栈时间,或者jar冲突时类加载来自那个jar包等问题。我们
阅读全文
Java的Finalizer引发的内存溢出
摘要:转自 http://ju.outofmemory.cn/entry/74671 本文介绍的是Java里一个内建的概念,Finalizer。你可能对它对数家珍,但也可能从未听闻过,这得看你有没有花时间完整地看过一遍java.lang.Object类了。在java.lang.Object里面就有一个fi
阅读全文
深入解析String#intern
摘要:转自:https://tech.meituan.com/in_depth_understanding_string_intern.html 深入解析String#intern john_yang ·2014-03-06 17:10 引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型Stri
阅读全文
Understanding String Table Size in HotSpot
摘要:In JDK-6962930[2], it requested that string table size be configurable. The resolved date of that bug was on 04/25/2011 and it's available in JDK 7. I
阅读全文
Java性能优化之JVM GC(垃圾回收机制)
摘要:Java的性能优化,整理出一篇文章,供以后温故知新。 JVM GC(垃圾回收机制) 在学习Java GC 之前,我们需要记住一个单词:stop-the-world 。它会在任何一种GC算法中发生。stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行。当stop-the-w
阅读全文
为什么新生代内存需要有两个Survivor区
摘要:目录(?)[-] 为什么要有Survivor区 为什么要设置两个Survivor区 目录(?)[-] 在我的上一篇博客中,介绍了JVM堆内存的结构以及在堆中进行的GC机制,链接是浅谈JAVA GC机制与性能优化 那么,在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区? 1
阅读全文
jmap命令详解
摘要:1、命令基本概述 Jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。 使用方法 jmap -histo pid。如果使用SHELL ,可采用jmap -hist
阅读全文
JVM GC 机制与性能优化
摘要:目录(?)[+] 目录(?)[+] 1 背景介绍 与C/C++相比,JAVA并不要求我们去人为编写代码进行内存回收和垃圾清理。JAVA提供了垃圾回收器(garbage collector)来自动检测对象的作用域),可自动把不再被使用的存储空间释放掉,也就是说,GC机制可以有效地防止内存泄露以及内存溢
阅读全文
JVM1.6 GC详解
摘要:前言 JVM GC是JVM的内存回收算法,调整JVM GC(Garbage Collection),可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,所以我们要了解JVM内存组成,回收算法,对象分配机制。 JVM 堆内
阅读全文