jvm原理
35 个 Java 代码性能优化总结
优化代码可以减小代码的体积,提高代码运行的效率。
从 JVM 内存模型谈线程安全
小白哥带你打通任督二脉
Java使用读写锁替代同步锁
应用情景 前一阵有个做反抄袭检测的小伙伴问了我一个问题。 --- 在多线程里就是有个变量,我需要读取它来判断是否给它写入一些信息。 打算加锁,但是如果读取时候加入readlock,写入时候加入writelock, 这样做可能读写不同步。但是如果一起加lock效果就跟synchr…
Java 线程内存模型, 线程、工作内存、主内存
Java 线程内存模型, 线程、工作内存、主内存
一个事半功倍的 Java 反射库
本文想要介绍的,jOOR(Java Object Oriented Reflection),它是一个对 java.lang.reflect 包的简单封装,使得我们使用起来更加直接和方便。
思维导图学 Java 虚拟机
这篇文章是作者读完深入了解 java 虚拟机的读书笔记,可以作为学习 java 虚拟机的路线。
关于 Java 面试,你应该准备这些知识点
作者的大厂面试经验分享以及面试时应该准备的哪些知识点。
高级java工程师面试必备:jvm知识体系总揽
要面试的赶紧看吧
【Java 高手之路】JVM 源码分析之堆外内存完全解读
概述 广义的堆外内存 说到堆外内存,那大家肯定想到堆内内存,这也是我们大家接触最多的,我们在 jvm 参数里通常设置 - Xmx 来指定我们的堆的最大值,不过这还不是我们理解的 Java 堆,-Xmx 的值是新生代和老生代的和的最大值,我们在 jvm 参数里通常还会加一个参数 - XX:MaxPermSize 来指定持久
详细深入分析 Java ClassLoader 工作机制
申明:本文首发于 详细深入分析 ClassLoader 工作机制 ,如有转载,请务必注明原出处即可,谢谢配合。 详细深入分析 Java ClassLoader 工作机制 什么是 ClassLoader ? 大家都知道,当我们写好一个 Java 程序之后,不是管是 C/S 还是 …
数据库中间件 MyCAT 源码解析 —— 分片结果合并(一)
???关注微信公众号:【芋艿的后端小屋】有福利: RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表 RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址 您对于源码的疑问每条留言都将得到认…
JDK8 并发包一览
《java并发编程系统与模型》已出版,真心希望大家能支持这本书,您的支持就是我最大的动力! AbstractExecutorService: 抽象的执行器。ArrayBlockingQueue: 一个有边界的先进先出的阻塞队列BlockingDeque: 接口描述,阻塞双端队列…
深度解析 Java 8:JDK1.8 AbstractQueuedSynchronizer 的实现分析
Java 中的 FutureTask 作为可异步执行任务并可获取执行结果而被大家所熟知。通常可以使用 future.get() 来获取线程的执行结果,在线程执行结束之前,get 方法会一直阻塞状态,直到 call() 返回,其优点是使用线程异步执行任务的情况下还可以获取到线程的执行结果,但是 FutureTask 的以上功能却是依靠通过一个叫 AbstractQueuedSynchronizer 的类来实现,至少在 JDK 1.5、JDK1.6 版本是这样的(从 1.7 开始 FutureTask 已经被其作者 Doug Lea 修改为不再依赖 AbstractQueuedSynchronizer 实现了,这是 JDK1.7 的变化之一)。
程序员必备利器——Java程序性能分析工具Java VisualVM(Visual GC)
程序员必备利器——Java程序性能分析工具Java VisualVM(Visual GC) VisualVM 是一款免费的集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏…
浅析JVM(二)运行时数据区
JVM 是 Java Virtual Machine(Java虚拟机)的缩写,它是一种规范,HotSpot VM是其最主流的实现(其他实现),通常我们讨论JVM如果没有特意说明是何种实现,便指的是HotSpot VM。JVM也并非仅支持Java语言,任何可编译为字节码的编程语言能可以运行在JVM上,例如前不久谷歌在 I/O 2017宣布将作为 Android 开发 First-Class 语言的 Kotlin。JVM定义了一些运行时数据区以便执行程序时候所用,一部分数据区在虚拟机启动时创建,在虚拟机退出时销毁,另外一些数据区是针对每个线程的,这些数据区是和线程的生命周期相同,即随着线程的创建而创建销毁而销毁。理解这些区域对于进一步理解JVM和编写并发程序是非常重要的,本文将结合作者自己的理解对各区域做一粗浅的解析,不对之处,望指出,共勉。
Java 线程池的理论与实践
Doug Lea 前段时间公司里有个项目需要进行重构,目标是提高吞吐量和可用性,在这个过程中对原有的线程模型和处理逻辑进行了修改,需要 发现有很多基础的多线程的知识已经模糊不清,如底层线程的运行情况、现有的线程池的策略和逻辑、池中线程的健康状况的监控等,这次重新回顾了一下,其中涉…
计算机程序的思维逻辑 (81) - 并发同步协作工具
我们在 67 节和 68 节实现了线程的一些基本协作机制,那是利用基本的 wait/notify 实现的,我们提到,Java 并发包中有一些专门的同步工具类,本节,我们就来探讨它们。 我们要探讨的工具类包括: 读写锁 ReentrantReadWriteLock 信号量 Semaphore 倒计…
java 性能优化注意的几个细节规则
一些有关代码优化的小细节,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。
计算机程序的思维逻辑 (80) - 定时任务的那些坑
本节探讨定时任务,定时任务的应用场景是非常多的,比如: 闹钟程序或任务提醒,指定时间叫床或在指定日期提醒还信用卡 监控系统,每隔一段时间采集下系统数据,对异常事件报警 统计系统,一般凌晨一定时间统计昨日的各种数据指标 在 Java 中,有两种方式实现定时任务: 使用 java.uti…
译-Java内存管理白皮书
说明 有关java并发可以看这里:https://yuedu.baidu.com/ebook... 要学习Java或者任意一门技术,我觉得最好的是从官网的资料开始学习。官网所给出的资料总是最权威最知道来…
Java多线程干货系列—(四)volatile关键字| 掘金技术征文
原本地址:Java多线程干货系列—(四)volatile关键字博客地址:http://tengj.top/ 前言 今天介绍下volatile关键字,volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往…
Garbage First G1 收集器 理解和原理分析
Garbage First Collector, 简称 G1 Collector,是 HotspotJDK1.7 后提供的面向大内存 (Heap 区数 G 到数 10G)、多核系统的收集器,能够实现软停顿目标收集并且具有高吞吐量, 具有更可预测的停顿时间。一些基本的垃圾收集的概念和术语可以参考我之前的一篇理解 GC(垃圾回收算法和原理)。