![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm虚拟机
武林是大腿
博客都是本人浏览的一些好的博文或者公众号进行的转载归纳,用于互相交流,共同学习。
文章末尾都备注有转载来源,如有侵权,联系删除。
展开
-
java内存模型JMM和底层实现原理
1.并发编程领域的关键问题1.1 线程之间的通信线程的通信是指线程之间以何种机制来交换信息。在编程中,线程之间的通信机制有两种,共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信,典型的共享内存通信方式就是通过共享对象进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信,在...转载 2020-04-16 10:29:51 · 225 阅读 · 0 评论 -
深入理解JVM垃圾收集机制(JDK1.8)
本文作者:@Ryan Miao本文链接:https://www.cnblogs.com/woshimrf/p/jvm-garbage.html版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!目录垃圾收集算法标记-清除算法复制算法eden survivor复制过程概述标记-整理算法分代收集算法HotSpot算法实现垃圾收集器Serial 收集...转载 2020-04-15 17:01:25 · 953 阅读 · 0 评论 -
JVM调优总结(十一)-- 反思
垃圾回收的悖论 所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的相应时间,造成拥塞或堆积。这也是后续JDK增加G1算法的一个重要原因。 当然,上面是从技术角度出发解决垃圾回收带来的问题,...转载 2019-11-18 15:02:58 · 79 阅读 · 0 评论 -
JVM调优总结(十)-- 调优方法
JVM调优工具Jconsole,jProfile,VisualVMJconsole :jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里JProfiler:商业软件,需要付费。功能强大。详细说明参考这里VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。如何调优观察内存释放...转载 2019-11-14 11:48:57 · 86 阅读 · 0 评论 -
JVM调优总结(九)-- 新一代的垃圾回收算法
垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在几百甚至几十毫秒以内,如果分代垃圾回收方式要达到这个指标,只能把最大堆的设置限制在一个相对...转载 2019-11-14 11:48:26 · 68 阅读 · 0 评论 -
JVM调优总结(八)-- 典型配置举例2
常见配置汇总堆设置-Xms:初始堆大小-Xmx:最大堆大小-XX:NewSize=n:设置年轻代大小-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:...转载 2019-11-14 11:45:36 · 79 阅读 · 0 评论 -
JVM调优总结(七)-- 典型配置举例1
以下配置主要针对分代垃圾回收算法而言。堆大小设置年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典...转载 2019-11-14 11:45:03 · 245 阅读 · 0 评论 -
JVM调优总结(六)-- 分代垃圾回收详述2
分代垃圾回收流程示意选择合适的垃圾收集算法串行收集器用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高。但是,也无法使用多处理器的优势,所以此收集器适合单处理器机器。当然,此收集器也可以用在小数据量(100M左右)情况下的多处理器机器上。可以使用-XX:+UseSerialGC打开。并行收集器对年轻代进行并行垃圾回收,因此...转载 2019-11-14 11:44:32 · 103 阅读 · 0 评论 -
JVM调优总结(五)-- 分代垃圾回收详述1
为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程中生成...转载 2019-11-14 11:43:53 · 87 阅读 · 0 评论 -
JVM调优总结(四)-- 垃圾回收面临的问题
如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈是真正进行程序...转载 2019-11-14 11:43:17 · 80 阅读 · 0 评论 -
JVM调优总结(三)-- 基本垃圾回收算法
可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引用根节点开始标记所有...转载 2019-11-14 11:42:48 · 67 阅读 · 0 评论 -
JVM调优总结(二)——一些概念
Java对象的大小 基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:Object ob = new Object(); 这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte+8...转载 2019-11-14 11:42:17 · 66 阅读 · 0 评论 -
JVM调优总结(一)——一些概念
数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress引用类...转载 2019-11-14 11:41:37 · 85 阅读 · 0 评论 -
JVM调优总结
转载: JVM调优总结(一)-- 一些概念转载: JVM调优总结(二)-- 一些概念转载: JVM调优总结(三)-- 基本垃圾回收算法转载: JVM调优总结(四)-- 垃圾回收面临的问题转载: JVM调优总结(五)-- 分代垃圾回收详述1转载: JVM调优总结(六)-- 分代垃圾回收详述2转载: JVM调优总结(七)-- 典型配置举例1转载: JVM调优总结(八)-- ...转载 2019-11-09 11:41:41 · 74 阅读 · 0 评论 -
JAVA内存泄漏和内存溢出的区别和联系
JAVA内存泄漏和内存溢出的区别和联系1、内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。2、内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就...转载 2019-11-09 11:37:15 · 128 阅读 · 0 评论 -
关于Jvm知识看这一篇就够了
Jvm系列(一):java类的加载机制Jvm系列(二):JVM内存结构Jvm系列(三):GC算法 垃圾收集器Jvm系列(四):jvm调优-命令篇Jvm系列(五):Java GC分析Jvm系列(六):Java服务GC参数调优案例Jvm系列(七):jvm调优-工具篇Jvm系列(八):jvm知识点总览Jvm系列(九):如何优化Java GCJvm系列(十):教你如何...转载 2019-11-09 11:23:32 · 127 阅读 · 0 评论 -
深入理解 Java 内存模型
《深入理解 Java 内存模型》程晓明著,该书在以前看过一遍,现在学的东西越多,感觉那块越重要,于是又再细看一遍,于是便有了下面的读书笔记总结。全书页数虽不多,内容讲得挺深的。细看的话,也是挺花时间的,看完收获绝对挺大的。也建议 Java 开发者都去看看。里面主要有 Java 内存模型的基础、重排序、顺序一致性、Volatile 关键字、锁、final。本文参考书中内容。地址:http://w...转载 2019-11-09 11:14:27 · 86 阅读 · 0 评论