java虚拟机
chenglibility
这个作者很懒,什么都没留下…
展开
-
java虚拟机java.lang.OutOfMemoryError系列之Java heap space解决思路
工作中虽然不经常遇到java.lang.OutOfMemoryError: Java heap space,但一旦出现将会严重影响系统运行,如果不能迅速解决,将会带来很恶劣的影响,所以掌握OutOfMemoryError:Java heap space的解决方法也是非常有必要的。解决问题首先要找出原因,要找原因要有依据,而内存溢出时的堆dump信息是最为重要的依据之一步骤一:先保证能拿到堆dump信息我写了一个简单的小例子,jvm运行参数为:-Xmx20M -Xms20M -XX:+HeapDu原创 2020-07-14 22:33:41 · 529 阅读 · 0 评论 -
java虚拟机不同垃圾收集器应用场景
java虚拟机提供了不同种类的垃圾收集器,分别适用于不同的场景。下图是各类收集器的大致组合情况收集器名称 适用区域 适应场景 优缺点 涉及jvm参数 Serial 新生代 1、Server环境不推荐使用 2、单线程、单CPU场景 3、Client模式 优点:单cpu下没有线程交互的开销 缺点:StopTheWorld带给用户不好的体验 -XX:+UseSerialGC:Client模式原创 2020-07-13 23:27:40 · 237 阅读 · 0 评论 -
java公平锁和非公平锁的对比
1、公平锁定义:多个线程按照先到先得的策略获取锁。优点:所有线程都有机会获得锁,不会饿死缺点:由于所有线程都会经历阻塞态,因此唤醒阻塞线程的开销会很大。2、非公平锁定义:所有的线程有同样的概率获取到锁。优点:可以减少CPU唤醒线程的开销,整体的吞吐效率会高缺点:可能会有线程长时间甚至永远获取不到锁,导致饿死。...原创 2020-07-12 18:31:15 · 591 阅读 · 0 评论 -
java实现线程安全的实现方法
1、互斥同步(阻塞式)可以简单理解为两个人上洗手间,一个人进去后要先上锁,出来后释放锁,后面的人才能进。(1)synchronized块这个是原生语法层面的互斥锁,默认是非公平锁(2)ReentrantLock这个是api层面的互斥锁。与synchronized相比,有以下几个新的特性:1)等待可中断。ReentrantLock可以在等待一段时间获取不到锁的情况下,放弃等待,改为处理其他事情。2)公平锁。ReentrantLock默认是非公平锁,可以在构造器中传入用公平锁。3)Reentra原创 2020-07-12 18:17:40 · 374 阅读 · 0 评论 -
java虚拟机相关参数官方文档
一、虚拟机参数设置文档官方文档http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.htmlhttp://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html非官方文档http://www.jvmer.com/jvm-xx-%E5%8F%82%E6%95%B0%E4%BB%8B%E7%BB%8D/http://q-redux.blogspo转载 2020-07-12 09:59:59 · 338 阅读 · 0 评论 -
java虚拟机注意点汇总
1、minor gc耗时标准minorGC时间在几十毫秒可以接受,几百毫秒就算比较长了,需要注意。查看minor gc时长方法:途中的YGCT即为minor gc时长原创 2020-07-12 09:42:12 · 242 阅读 · 0 评论 -
java虚拟机性能优化场景及方法
场景1:Full GC时间太长(1)降低堆内存大小。这样能增加full gc的次数,但每次full gc的时间会降低(2)定时出发full gc。如果full gc的频率不高,如十几个小时才触发一次,则可以考虑做个定时器,显式地调用System.gc()进行full gc。场景2:经常发生OutOfMemory内存溢出(1)本地缓存改为集中缓存。大量使用本地缓存(如大量使用HashMap作为K/V缓存),会占用堆上很多内存,尤其在集群情况下,会造成更多浪费,这时可以考虑把本地缓存改为集中缓存(如Re原创 2020-07-12 09:02:07 · 826 阅读 · 0 评论