老大难的GC原理及调优,这下全说清楚了

概述 本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,学习之后将了解如何对生产系统出现的GC问题进行排查解决 阅读时长约30分钟,内容主要如下: GC基础原理,涉及调优目标,GC事件分类、JVM内存分配策略、GC日志分析等 CMS原理及调优 G1原理及调优 GC问题排查和解决思路 GC基础原理 1 GC调优目标 大多数情况下对 Java 程序进行GC调优, 主要关注两个目标:响应速度、吞吐量 响应速度(Responsiveness) 响应速度指程序或系统对一...阅读全文

掘金 2019-09-25 00:00 掘金

.

掘金公告:7月30日站点停服升级 致亲爱的掘友: 7月30日(周四)11:00 ~ 7月31日 08:00 期间,掘金社区将对服务器、客户端和数据库进行架构升级,升级期间会暂停网站及移动端的访问,访问恢复时间以实际为准,请各位谅解。 停服期间,掘友可以通过掘金技术社区微博或者掘金公众号获取近期精选的技术文章,感谢掘友对掘金的长期支持,我们会持续努力,和大家一起进步! 掘金社区 2020.7.30阅读全文

juejin.im 2020-07-30 00:00 juejin.im

修改linux端口范围 ip_local_port_range - solohac

tags: ip_local_port_range 端口范围 sysctl    Linux中有限定端口的使用范围,如果我要为我的程序预留某些端口,那么我需要控制这个端口范围, 本文主要描述如何去修改端口范围。   1 2 /proc/sys/net/ipv4/ip_local_port_range的原文解释: The /proc/sys/net/ipv4/ip_local_port_range defines the local port range that is used by TCP a...阅读全文

博客园 2013-11-01 12:20 博客园

如何在 Linux 中使用ss命令监控网络连接

ss命令是用于在Linux系统上显示与网络套接字相关的信息的工具。 该工具显示netstat命令的更多详细信息,该命令用于显示活动的套接字连接。 在本教程中,我们会举例说明ss命令如何用于在Linux中显示各种网络连接信息。 1、列出所有连接 基本的ss命令,不带任何选项,仅列出所有连接,无论它们处于什么状态。 ss 2、列出监听端口和非监听端口 您可以使用-a选项检索侦听端口和非侦听端口的列表,如下所示。 ss -a 3、列出监听套接字 要仅显示侦听套接字,请使用-l标志,如图所示。 ss -...阅读全文

linux资讯 2019-10-18 00:00 linux资讯

JVM之G1回收器和常见参数配置

过去的几天里,我把JVM内部的垃圾回收算法和垃圾回收器。还剩下最后一个G1回收器没有说,我们今天数一下G1回收器和常见的参数配置。G1回收器G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器,以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征。我们会想一下我们上次课说的parNew+CMS回收器已经很厉害了,但是我们的服务器是那种超大内存的服务器呢?比如内存是32G的,可能最后我们的堆内存需要分配到十多个G,我们用parNew+C...阅读全文

知乎 2019-09-23 00:00 知乎

System.gc()和-XX:+DisableExplicitGC启动参数,以及DirectByteBuffer的内存释放_aty

我之前的一篇博客: java中使用堆外内存,关于内存回收需要注意的事和没有解决的遗留问题(等大神解答)  介绍了java堆外内存的使用,以及堆外内存的释放。那篇博客遗留了一个问题:DirectByteBuffer究竟是如何释放堆外内存的?本文主要是解决下那篇博客的遗留问题。 首先我们修改下JVM的启动参数,重新运行之前博客中的代码。JVM启动参数和测试代码如下: -verbose:gc -XX:+PrintGCDetails -XX:+DisableExplicitGC -XX:MaxDirec...阅读全文

CSDN博客_disableexplicitgc 2014-09-19 22:11 CSDN博客_disablee 等

Java JVM 参数设置大全

首页 > 基础教程 > 基础知识 > JDK&JRE&JVM Java JVM 参数设置大全 JVM参数设置说明 参数名称 含义 默认值   -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制. -Xmx 最大堆大小 物理内存的1/4(<1GB) 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制 -Xmn 年轻代大...阅读全文

www.51gjie.com 2020-07-28 14:53 www.51gjie.com

JVM1.8参数大全

前言碎语 JVM内存模型,java GC垃圾内存回收,Jvm性能调优等等是个老生常谈的话题,故将官方JVM参数详情直译(Google翻译)记录在此,以备做jvm参数调优之时方便查询,同时给大家提供便利 jvm1.8参数详情: -Xcomp 在第一次调用时强制编译方法。默认情况下,客户端VM(-client)执行1,000个已解释的方法调用,Server VM(-server)执行10,000个已解释的方法调用以收集有效编译的信息。指定该-Xcomp选项会禁用已解释的方法调用,从而以牺牲效率为代价...阅读全文

jvm性能调优速查手册 | KL博客 2018-09-13 00:00 jvm性能调优速查手册 | K 等

jvm 基础篇-(5)-jvm-对象年龄(-XX:+PrintTenuringDistribution)

jvm 基础篇-(5)-jvm-对象年龄(-XX:+PrintTenuringDistribution)-XX:+PrintTenuringDistribution 赠送银弹: -XX:SurvivorRatio     作用:输出显示在survivor空间里面有效的对象的岁数情况。 {Heap before GC invocations=0 (full 0): par new generation total 1887488K, used 1677824K [0x00000006e0c0000...阅读全文

简书 2018-02-06 00:00 简书

<转>一个最不可思议的MySQL死锁分析

1 死锁问题背景 1 1.1 一个不可思议的死锁 1 1.1.1 初步分析 3 1.2 如何阅读死锁日志 3 2 死锁原因深入剖析 4 2.1 Delete操作的加锁逻辑 4 2.2 死锁预防策略 5 2.3 剖析死锁的成因 6 3 总结 7     死锁问题背景   做MySQL代码的深入分析也有些年头了,再加上自己10年左右的数据库内核研发经验,自认为对于MySQL/InnoDB的加锁实现了如指掌,正因如此,前段时间,还专门写了一篇洋洋洒洒的文章,专门分析MySQL的加锁实现细节:《MySQ...阅读全文

阿里云开发者社区 2016-06-19 00:00 阿里云开发者社区

MySQL 加锁处理分析

本文来自:何登成的技术博客   一、背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线上的一个死锁场景,了解死锁产生的原因。 注:MySQL是一个支持插件式存储...阅读全文

Sina App Engine Blog 2020-07-25 01:02 Sina App Engine 等

Spring 踩坑之@Transactional 神奇失效 - 个人文章

小鱼儿 18 Spring 踩坑之@Transactional 神奇失效 事务处理 事务 spring java 发布于 2018-04-26 引言 对于追求数据强一致性的系统,事务扮演者十分重要的角色.最近在项目中遇到一个事务失效的问题,在此分享给大家。 情景回放 ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restar...阅读全文

SegmentFault 思否 2018-04-26 00:00 SegmentFault 思否 等

Git恢复之前版本的两种方法reset、revert(图文详解)_游笑天涯

2019/7/27 修改更新 一、问题描述 在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset)、反做(revert)。 二、背景知识 git的版本管理,及HEAD的理解 使用git的每次提交,Git都会自动把它们串成一条时间线,这条时间线就是一个分支。如果没有新建分支,那么只有一条时间线,即只有一个分支,在Git里,这个分支叫主分支,即master分支。有一个HEAD指针指向...阅读全文

CSDN博客_git revert 2018-04-14 21:35 CSDN博客_git reve 等

中小企业数字化转型应从业务流程自动化开始

由于经济下行的压力加上黑天鹅因素频发,带来了更多不确定性,大量中小企业存在迫切的增效降本需求。 同时,他们并不想投入大量成本以应对未知变化,期望尽快看得见成效。 对于中小企业来说,实现业务自动化刻不容缓,不仅可以提高业务管理效率,还可以帮助企业节省人力成本! 一、什么是业务自动化 业务自动化,是利用技术对完成一种特别功能或工作流的活动或服务进行自动化。 自动化的业务流程以协作管理来改善企业整体的工作流,实现更高的效率,用以改变业务需要,减少人为错误并明晰工作角色和责...阅读全文

java技术圈 2020-07-20 15:54:35 CORNERSTONE

为什么大公司都开始用SaaS了?

SaaS应用程序的核心指导原则之一,是通过应用程序的共享多租户体系结构为尽可能多的客户提供服务。 用户之所以能从这个共享模式中受益,是因为软件供应商能够利用规模经济,借助广泛的功能和工作流程、高水平的安全性和服务的可用性来传递价值。 这在以前只有“财富500强”公司才能做到。 不过,这种基于云的现成软件解决方案的民主化,它的另一面是,在谈及根据自身实际需求定制解决方案时,企业必须权衡一定程度的灵活性。 在SaaS之前,公司采用的其中一个传统方法是购买现成的本地解决方案,然...阅读全文

java技术圈 2020-07-17 15:07:06 CORNERSTONE

hammerspoon多屏焦点切换

最近为 mac 新弄了一个 4k 的外接屏,由于平时操作仅限于触控板,无鼠标人士。每次想把鼠标切换到外接屏上就得滑好几次触控板,甚是伤手! 通过不断的 google,终于发现一款神器:Hammerspoon 介绍Hammerspoon可以自定义Mac OS X的快捷键(例如Command+Shift+h)以实现多类操作,我个人主要将其用于窗口管理(比moom for mac更加高效)与应用启动(比alfred for mac更加高效)。 Hammerspoon: https://www.hamm...阅读全文