
jvm
文章平均质量分 76
淘气的高老板
污,孤傲,高冷,薄情,悲天悯人的高老板
展开
-
JVM (1) JVM为什么需要GC?
原文地址点击打开链接社区内有人发起了一个讨论,关于JVM是否一定需要GC?他们认为应用程序的回收目标是构建一个仅用来处理内存分配,而不执行任何真正的内存回收操作的 GC。即仅当可用的 Java 堆耗尽的时候,才进行顺序的 JVM 停顿操作。首先需要理解为什么需要GC。随着应用程序所应对的业务越来越庞大、复杂,用户越来越多,没有GC就不能保证应用程序正常进行。而经常造成STW的G转载 2017-03-02 11:23:25 · 492 阅读 · 0 评论 -
JVM(3)对象A和B循环引用,最后会不会不被GC回收?-------关于Java的GC机制
①首先说一下,GC里边在JVM当中是使用的ROOT算法,ROOT算法,什么称作为ROOT呢,就是说类的静态成员,静态成员就是static修饰的那种,是“根”的一个,根还包括方法中的成员变量,只有成员或对象不挂在根上,GC的时候就可能把他们搞掉,这里提到的循环引用,就看这个循环引用是否挂在根上,如果挂在根上,如果这个根还被JVM的Java代码所执行的话,就不会GC掉,如果说这个根已经被释放掉了,这个原创 2015-03-31 23:49:10 · 8774 阅读 · 4 评论 -
Java 并发与多线程规范(4) 自旋锁是可重入的吗?CAS与自旋锁的关系,CAS的ABA问题,以及乐观锁,悲观锁,互斥锁,读写锁的整理
CASCAS,自旋锁跟compare and set有关系,但是并不是CAS就是自旋锁。我们看一段代码:/* 不同线程检测最大值 */ AtomicLong largest = new AtomicLong(); long obsvValue = 0; /* 错误的方式,此更新不是原子性的 */ largest.set(Math.max原创 2017-07-19 15:06:32 · 2059 阅读 · 0 评论 -
Java 并发与多线程规范(3)happen before和volatile总结,ArrayList和CopyOnyWriteList的区别
volatile的语义volatile 的语义是memory barrier可以参考一下Java 内存模型。线程在启动后,读取内存Heap 值复制到自己的工作缓存,比如寄存器、N级缓存等。寄存器、N级缓存在CPU,如果需要其他线程感知的话,需要同步是主存中,如果其他线程看到变量是volatile的话,回去主存加载。Heap 就存放在主存中,也就是内存中。volatile 实际上是强制线程去主存中读取原创 2017-07-19 11:42:53 · 728 阅读 · 0 评论 -
JVM(5) JVM 参数详解
晚上忽然发现自己的MAC从运行程序到看到Spring boot日志时间超过20秒。新建个空的boot空工程也需要10秒才会看到boot的启动日志。 最后设置了gc日志看了下有无异常情况。 从jvisualvm看下 Java HotSpot(TM) 64-Bit Server VM (25.131-b11) for bsd-amd64 JRE (1.8.0_131-b11), built o原创 2017-08-11 00:04:29 · 813 阅读 · 0 评论 -
关注程序性能(2) jstack, jmap, jvisualvm
jstacklocalhost:jvm_test_dump bao$ jstack 574262017-07-07 10:58:50Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode):"JMX server connection timeout 14" #14 daemon prio=9 os_pr原创 2017-07-07 11:26:42 · 920 阅读 · 0 评论 -
Java如何获取方法参数的参数名称?
1. Java8public class TestGetMethodParamName { public String test(String name, Integer age) { return null; } public static String printMethods() { StringBuilder sb = new Strin原创 2017-10-10 12:53:59 · 4922 阅读 · 0 评论 -
JVM(2)不同的垃圾回收器的比较
4款Java垃圾回收器——错误的选择导致糟糕的性能对大多数开发人员而言有两件事情是个谜——垃圾回收以及异性。由于我对后者也不是特别了解,我想我还是试着说说前者吧,尤其是随着Java 8的到来,这个领域也发生了许多重大的变化及提升,其中最重要的莫过于持久代(PermGen)的删除以及一些令人振奋的新的优化(后面会陆续提及这些)。说起垃圾回收,许多人都了解它的概念,也在日常的编程中有所原创 2015-05-05 14:00:37 · 837 阅读 · 0 评论 -
多线程,为每个线程维护变量副本的ThreadLocal,ThreadLocal会造成内存泄漏吗?
1.简单介绍在ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本。 下面是示例:public class ThreadLocalTest { /*1通过匿名内部类覆盖ThreadLocal的initialValue()方法,指定初始值 */ private static ThreadLocal<Integer>原创 2017-10-25 17:55:12 · 861 阅读 · 2 评论