摘要:多次思考过这个问题,都没有形成理论,今天有时间了,我把他总结出来,希望对大家有所帮助 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果
阅读全文
lotus贵有恒何必三更眠五更起 最无益只怕一日曝十日寒 |
|
随笔分类 - java底层
JVM,GC
摘要:多次思考过这个问题,都没有形成理论,今天有时间了,我把他总结出来,希望对大家有所帮助 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果
阅读全文
摘要:转载。 https://blog.csdn.net/wu1226419614/article/details/73740899 转载。 https://blog.csdn.net/wu1226419614/article/details/73740899 转载。 https://blog.csdn.
阅读全文
摘要:区别如下: 1. lock是一个接口,而synchronized是java的一个关键字,synchronized是内置的语言实现;(具体实现上的区别在《Java虚拟机》中有讲解底层的CAS不同,以前有读过现在又遗忘了。) 2. synchronized在发生异常时候会自动释放占有的锁,因此不会出现死
阅读全文
摘要:转载。 https://blog.csdn.net/asdf717/article/details/47252763 转载。 https://blog.csdn.net/asdf717/article/details/47252763 转载。 https://blog.csdn.net/asdf71
阅读全文
摘要:转载:http://houlinyan.iteye.com/blog/1112535 基本概念 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁
阅读全文
摘要:一、简单定义不可变对象(Immutable Objects)即对象一旦被创建,它的状态(对象的数据,也即对象属性值)就不能改变,反之即为可变对象(Mutable Objects)。当满足以下条件时,对象才是不可变的:1. 对象创建以后其状态就不能修改。2. 对象的所有域都是final类型。3. 对象
阅读全文
摘要:关于Java传参时是引用传递还是值传递,是一个讨论比较多的话题,有说Java中只有值传递,也有些地方说引用传递和值传递都存在,本篇记录思考过程,不保证正确性, 感兴趣的同学一起讨论。 1.基本类型和引用类型在内存中的保存 Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基
阅读全文
摘要:java“指针” Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念。并且由于Java不能 通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对象。本文会让你了解什么是影子clone与深度
阅读全文
摘要:............................................................................总结........................................................................
阅读全文
摘要:tenured /ˈtenjərd/ 老年代 这里讨论的收集器基于JDK1.7Update 14之后的HotSpot虚拟机,这个虚拟机包含的所有收集器如下图3-5所示: 上图展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。 1.Serial收集器 Serial收
阅读全文
摘要:摘自:http://uule.iteye.com/blog/2114697 摘自:http://uule.iteye.com/blog/2114697 JVM垃圾回收与性能调优总结 JVM调优的几种策略 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻
阅读全文
摘要:前提:某大型跨境电商业务发展非常快,线上机器扩容也很频繁,但是对于线上机器的运行情况,特别是jvm内存的情况,一直没有一个统一的标准来给到各个应用服务的owner。经过618大促之后,和运维的同学讨论了下,希望将线上服务器的jvm参数标准化,可以以一个统一的方式给到各个应用,提升线上服务器的稳定性,
阅读全文
摘要:目录 数据类型堆与栈Java对象的大小引用类型按照基本回收策略分按分区对待的方式分按系统线程分如何区分垃圾如何处理碎片如何解决同时存在的对象创建和对象回收问题为什么要分代如何分代什么情况下触发垃圾回收分代垃圾回收流程示意选择合适的垃圾收集算法小结回收器选择辅助信息常见配置汇总调优总结垃圾回收的瓶颈增
阅读全文
摘要:注:本文的目的并不是鼓励使用finalize方法,而是大致理清其作用、问题以及GC执行finalize的过程。 1. finalize的作用 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。 finalize()与C++
阅读全文
摘要:强引用-FinalReference 介绍: 强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收,使用方式: String str = new String("str"); 这个str就是强引用。 可用场景: 地球人都知道,但是我讲不出来。 软引用-SoftReferen
阅读全文
摘要:Java类从加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括,加载 ,验证 , 准备 , 解析 , 初始化 ,卸载 ,总共七个阶段。其中验证 ,准备 , 解析 统称为连接。 而在解析阶段会有一个步将常量池当中二进制数据当中的符号引用转化为直接引用的过程。 符号引用 :符号引用以一组符号
阅读全文
摘要:1.堆内存分配:JVM 初始分配的内存由**-Xms** 指定,默认是物理内存的 1/64;JVM 最大分配的内存由**-Xmx** 指定,默认是物理内存的 1/4;默认空余堆内存小于 40% 时,JVM 就会增大堆直到-Xmx 的最大限制;空余堆内存大于 70% 时,JVM 会减少堆直到 -Xms
阅读全文
摘要:性能优化指标 性能优化指标 性能优化指标 性能优化指标 一、名词解释 RT = return time 响应时间 PV=page view 页面浏览数 TPS=transactions per second 每秒事务数 QPS=queries per second 每秒请求数 RPS=request
阅读全文
摘要:1. 概述 某公司面试,总监大叔过来,问了图论及栈的最大深度,然后^_^ 一直记着,今天搞一下 2. 代码 package com.goodfan.test; public class JavaStackTest { private int count = 0; public void testSt
阅读全文
摘要:编译简介 在谈到JIT前,还是需要对编译过程有一些简单的了解。 在编译原理中,把源代码翻译成机器指令,一般要经过以下几个重要步骤: 什么是JIT1、动态编译(dynamic compilation)指的是“在运行时进行编译”;与之相对的是事前编译(ahead-of-time compilation,
阅读全文
|