10 铁锚

尚未进行身份认证

我要认证

系统架构师,Java性能调优专家。热爱程序开发和设计; 积极应对各种情境和挑战; 喜欢钻研新技术, 闲暇时喜欢翻译和分析英文文档/技术博客。

等级
TA的排名 493

获取JVM堆内存转储的常用方法

文章目录1. 堆内存转储简介2. 使用JDK内置工具2.1 `jmap` 工具2.2 `jcmd` 工具2.3 JVisualVM 工具3. 自动执行堆内存转储4. JMX方式4.1. JMX客户端工具4.2. 编程方式调用5. 小结1. 堆内存转储简介堆内存转储(Heap Dump),是指JVM堆内存在某一个时刻的快照,一般使用 hprof 格式的二进制文件来保存。 可用于分析内存泄漏问题,以及Java程序的内存使用优化。常见的内存转储分析工具包括: jhat, JVisualVM, 以及基于Ecl

2020-09-24 23:24:09

深入解析G1垃圾收集器与性能优化

本文详细介绍怎样配置G1垃圾收集器的参数,如何进行性能调优, 以及如何对GC性能进行分析和评估。G1的全称为 Garbage First Garbage Collector, 是一款内置在HotSpot JVM 中的服务端垃圾收集器。G1使用【分代算法】, 将GC过程拆解为多个并发和并行阶段,将暂停时间打散,从而实现了低延迟特性,并保持良好的吞吐量。只要G1认为可以进行垃圾收集,就会触发一次GC, 当然,G1优先回收存活数据较少的区域。存活数据少就表示里面的垃圾对象多,这也是名字 Garbage.

2020-09-08 20:50:24

SpringBoot连接超时导致的502错误案例

1.问题描述内部系统之间通过Nginx来实现路由转发。但最近发现有一个系统,经常报502错误,每天达到上百次,完全无法忍受。2. 原因排查于是进行排查, 发现配置人员把连接超时时间(server.tomcat.connection-timeout)的单位,理解为秒,实际上是毫秒。SpringBoot的部分配置如下:# Tomcatserver: tomcat: uri-encoding: UTF-8 max-threads: 1000 min-spare-threa

2020-09-02 10:15:16

Java坑人面试题系列: 变量声明(中级难度)

作用域规则与变量覆盖面试题Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。如果你看过往期的问题,就会发现每一个都不简单。这些试题模拟了认证考试中的一些难题。 而 “中级(interme...

2020-05-06 23:33:31

Linux系统命令 - 查看内存使用情况

一、 查看内存使用情况在Linux系统中,大部分操作都通过命令行来完成,因为大部分情况下不开启图形界面。在服务器环境,则只能通过shell执行操作。下面介绍查看内存使用情况的相关命令。 包括物理内存(RAM)和交换内存(swap)。我们经常需要检查服务器的内存使用情况,以及每个进程占用的内存,避免发生资源短缺进而影响用户体验。对于网站和Web服务,必须具有足够的内存才能处理客户端请求。 ...

2020-04-29 23:55:08

Java坑人面试题系列: 线程/线程池(高级难度)

ExecutorService 接口及相关API细节详解。Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。如果你看过往期的问题,就会发现每一个都不简单。这些试题模拟了认证考试中的一些难...

2020-03-08 00:52:21

Java坑人面试题系列: 比对while与for循环(中级难度)

Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。如果你看过往期的问题,就会发现每一个都不简单。这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad...

2020-02-18 17:15:03

辨析:自旋锁与信号量

自旋锁(Spinlock)信号量(Semaphore):1. 自旋锁与信号量简介自旋是锁的一种实现方式,通过忙等待(“自旋,spinning”)来实现【例如通过while循环持续请求获取锁】。信号量的概念比锁的范围更大, 可以说, 锁是信号量的一种特殊情况。一般来说,自旋锁只在进程内有效,而信号量可同于控制多个进程之间的同步。锁主要用于互斥操作,也就是说,每次只允许一个线程持有这个...

2020-02-05 15:09:51

Java坑人面试题系列: 包装类(中级难度)

Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。如果你看过往期的问题,就会发现每一个都不简单。这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad...

2020-02-03 23:21:36

JVM技术细节: HotSpot的内存模型

1、对象无句柄在早期的JVM版本,例如 Classic VM 实现中,使用了 间接句柄(indirect handle) 来表示对象引用。虽然使用这种方式使得垃圾收集器在重定位对象(relocating)时非常方便,但却导致了严重的性能瓶颈,因为每次访问Java对象的实例变量都需要两步操作。HotSpot 推出以后,Java 代码就不再使用任何句柄。对象引用使用 直接指针(direct p...

2020-02-02 21:48:58

删除MySQL表的SQL语句-DROP-TABLE-简介

辨析: 在SQL中, DROP 用于删除表结构等信息, 属于数据格式定义 DDL的范畴;而 DELETE 用于删除数据,属于数据内容操作 DML 的范畴。官方给出的 DROP 关键字删除表结构的语法如下:DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE]当然...

2019-12-10 21:11:15

解析一个Java对象占用多少内存空间

说明: alignment, 对齐, 比如8字节的数据类型long, 在内存中的起始地址必须是8的整数倍。padding, 补齐; 在对象所占据空间的末尾,如果有空白, 需要使用padding来补齐, 因为下一个对象的起始位置必须是4/8字节(32bit/64bit)的整数倍(这又是一种对齐)。问题描述一个对象具有100个属性, 与100个对象每个具有1个属性, 哪个占用的内存空间更大...

2019-07-13 16:02:15

Java进阶知识 - 多线程与线程间通信

CountdownLatch, CyclicBarrier 分别适合什么场景呢?大部分情况下, 子线程只需要关心自身执行的任务. 但在某些复杂的情况下, 需要使用多个线程来协同完成某个任务, 这就涉及到线程间通信(inter-thread communication)的问题了.主要涉及的内容有:thread.join() 方法object.wait() 方法object.notif...

2019-03-12 19:21:31

Web开发团队常备工具

Web系统的性能问题会影响企业的各项业务。漏洞太多,运营团队就只能疲于奔命。缺少吸引力, 产品团队则会受困于用户留存率。改不完的BUG, 开发团队就没时间进行新功能开发。业务人员的效率跟着提升不上去。技术经理不能清楚证明团队所做的努力是否合理。类似的情形常常出现。有什么方法可以避免这些风险呢? 工欲善其事必先利其器,我们需要引入一些趁手的工具,各个阶段都要具备。规划工具大部分...

2019-03-04 19:34:38

升级https - 解决系统被网络运营商植入广告等问题

情景回顾福建泉州的客户反馈, 说系统使用不正常, 经常提示 “网络错误”, 或者点击某些按钮时会进行页面跳转。让客户试过各种“万能”手段: 比如清缓存, 换浏览器, 换电脑等等,问题依然会复现。通过QQ远程桌面连接客户的电脑, 使用浏览器的Network控制台, 看到监控信息中莫名出现的加载内容, 如下图所示:怀疑是客户所使用的宽带运营商存在网页劫持和篡改行为。让客户换运营商有点不太现...

2019-02-22 17:51:31

CSS高级技巧:自动省略左侧文本

难以置信! 浏览器和CSS规范居然支持自动省略左侧的文本了。 通过 text-overflow: ellipsis, 搭配固定的 width 属性, 以及overflow: hidden 样式, 就可以实现这样的功能; 能用CSS实现,就不需要编写复杂的 JavaScript 代码来计算字符串宽度, 或者进行截断了. CSS的自动省略特性, 对无障碍环境也非常友好。text-overflow: ...

2018-12-21 12:00:41

WebRTC基础实践 - 10. 总结

我们创建了一个视频聊天的APP, 同时支持传输文件以及其他数据!内容回顾在本教程中, 我们学习了以下内容:获取webcam摄像头的视频内容。通过 RTCPeerConnection 传输视频。通过 RTCPeerConnection 传输数据。配置信令服务来交换消息。集成对等连接和信令服务。拍照并用数据通道传递给对方。下一步体验WebRTC官方示例程序AppRTC: ht...

2018-12-16 21:30:59

WebRTC基础实践 - 9. 拍照并传给对方

本节内容在本节课程中, 我们将学习以下内容:拍照并通过canvas元素获取图像数据。给对面发送图片。本节的完整版代码位于 step-06 文件夹中。工作原理前面的小节中, 我们使用 RTCDataChannel 来传递文本消息。本节课程, 将学习如何发送文件: 下面的示例发送的是通过 getUserMedia() 捕获的照片文件, 原理都是一样的。核心内容包括:建立数据通道...

2018-12-16 21:29:12

WebRTC基础实践 - 8. 集成对等通信和信令服务

本节内容在本节课程中, 我们将学习以下内容:在Node.js平台, 通过Socket.IO来启动信令服务。用信令服务交换WebRTC客户端之间的元数据(metadata)。本节的完整版代码位于 step-05 文件夹中。更新HTML和JavaScript代码更新 index.html 文件, 内容如下:<!DOCTYPE html><html>&lt...

2018-12-14 11:01:45

WebRTC基础实践 - 7. 配置信令服务

本节内容在本节课程中, 我们将学习以下内容:通过 npm 安装 package.json 文件中指定的项目依赖运行Node.js服务器, 通过 node-static 提供静态文件服务。用Socket.IO创建消息传递服务创建聊天室以及发送聊天消息。本节的完整版代码位于 step-04 文件夹中。基本概念要创建并保持WebRTC通话, 客户端之间需要互相交换元数据信息, 包括:...

2018-11-28 16:43:55

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。