Skip to main content

moregeek program

浅谈自旋锁和 jvm 对锁的优化_crmeb中邦科技的博客-多极客编程

背景先上图由此可见,非自旋锁如果拿不到锁会把线程阻塞,直到被唤醒;自旋锁拿不到锁会一直尝试为什么要这样?好处阻塞和唤醒线程都是需要高昂的开销的,如果同步代码块中的内容不复杂,那么可能转换线程带来的开销比实际业务代码执行的开销还要大。在很多场景下,可能我们的同步代码块的内容并不多,所以需要的执行时间也很短,如果我们仅仅为了这点时间就去切换线程状态,那么其实不如让线程不切换状态,而是让它自旋地尝试获取

Read More

jdk1.6中string类的坑,快让我裂开了…_华为云开发者社区的博客-多极客编程

摘要:JVM优化的目标就是:尽可能让对象都在新生代里分配和回收,尽量别让太多对象频繁进入老年代,避免频繁对老年代进行垃圾回收,同时给系统充足的内存大小,避免新生代频繁的进行垃圾回收。本文分享自华为云社区《​​千万不要在生产环境使用这个版本的JDK,这不?内存又溢出了!快要裂开了!(建议收藏)​​》,作者:冰 河 。小伙伴的疑问问题确定排查问题的整个过程相当耗时,这里,我就直接说定位到的问题吧。后面

Read More

密集计算场景下的 jni 实战_vivo互联网技术的博客-多极客编程

作者:vivo 互联网服务器团队- Wei Qianzi、Li Haoxuan在 Java 发展历程中,JNI 一直都是一个不可或缺的角色,但是在实际的项目开发中,JNI 这项技术应用的很少。在笔者经过艰难的踩坑之后,终于将 JNI 运用到了项目实战,本文笔者将简单介绍 JNI 技术,并介绍简单的原理和性能分析。通过分享我们的实践过程,带各位读者体验 JNI 技术的应用。一、 背景计算密集型场景

Read More

性能调优bug层出不穷?这3份文档轻松搞定jvm调优_wx6135b7119b442的博客-多极客编程

前提现在依然有很多人在观望跳槽的时机,因为在没找到下一家公司的时候谁都不敢轻易说出离职两个字。而一旦到了去面试的时候,又会自我怀疑:比如说觉得自己学历不够高;没有大厂履历;之前待的公司用的都是一些老技术栈......这次面试真的能顺利吗?说实话,这些都是一些外在干扰因素,在求职者身上,最重要的还是要看到工作能力的高低上下。这样,薪资等其他方面才能水到渠成。高频技术考点究竟哪些技术点可以在面试官筛选

Read More

卷起来,突破35岁焦虑,动画演示CPU记录函数调用过程,进互联大厂如此简单-多极客编程

hi 大家好,我是 DHL。公众号:ByteCode ,专注分享有趣硬核原创内容,Kotlin、Jetpack、性能优化、系统源码、算法及数据结构、动画、大厂面经 全文分为 视频版 和 文字版, 视频版: 通过语音和动画,能够更加直观的看到,内存记录方法调用和返回过程。 bilibili 地址: b23.tv/TQXL4xx 文字版 我们在写代码的时候有没有思考过 方法如何调用 、 方法执行

Read More

JVM调优,参数命令在官网中如何查找?-多极客编程

当我们需要给JVM调优时,如调整堆大小,设置垃圾回收器,对相关参数想要官方的准确的解释时,接下来教大家如何在官网中寻找到你想要的答案【需要有一定英文基础】当我们运行jar包时的命令nohup java -Xms1024m -Xmx1024m -XX:+UseParallelGC -XX:+PrintCommandLineFlags  -jar xxx.jar &现在,说下如何在官网找到以上

Read More

快速串讲---JVM内存的区域划分-多极客编程

目的 快速定位JVM内存泄漏或者溢出等问题。 面试基础题,加分项。 程序计数器(Program Counter Register) 记录当前线程所执行的字节码的行号。 依赖其实现分支、循环、跳转、异常处理、线程恢复。 Natvie 方法时,其的值就为空。 Java 虚拟机规范中唯一没有规定内存溢出的区域。 “线程私有”的内存区域。 虚拟机栈(Virtual Machine Stacks) 其生命

Read More

实战案例:prometheus监控Tomcat(JMX)-多极客编程

prometheus监控JMX需要向Tomcat内添加jmx_prometheus_javaagent包,并暴露一个端口给外部访问来获取数据。本文采用0.3.1版本:​​jmx_prometheus_javaagent-0.3.1.jar​​Tomcat采用docker部署,生产环境建议做成镜像用k8s启动。​1、前置准备本文采用docker方式部署Tomcat1.1、创建install_tomc

Read More

面试官:怎么做JDK8的垃圾收集器的调优?-多极客编程

面试官:怎么做JDK8的垃圾收集器的调优? 看着面试官真诚的眼神,心中暗想看起来年纪轻轻却提出如此直击灵魂的问题。擦了擦额头上汗,我稍微调整了一下紧张的情绪,对面试官说: 在JDK8中有Serial收集器、Parallel收集器、CMS收集器、G1收集器这么几种收集器,需要根据实际硬件配置和业务需求进行选择调优。 如此浅显的回答,无法让面试官达到深入的要求,肯定不能满足面试官强烈的需求,果不其然

Read More

Java的wait()、notify()学习三部曲之三:修改JVM源码控制抢锁顺序-多极客编程

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 这是《Java的wait()、notify()三部曲》系列的最后一章,前两章请看《Java的wait()、notify()学习三部曲之一:JVM源码分析》、《Java的wait()、notify()学习三部曲之二:修改JVM源码看参数》。

Read More

用Java十多年了,能“精通Java”了吗?-多极客编程

我从毕业做程序员就开始用 Java,到现在已经工作快 20 年了。减去我做手游用 C++、Lua 的几年,再减去后来转管理写代码少的时间,我真正写 Java 代码的时间至少也在 10 年以上。 如果你问我“Java 已经精通了吗?”,说实话,还是有点心虚。 Java 博大精深,那么多知识点,肯定有我不懂的。另外,每个人对“精通”都有自己的理解,有人觉得是精于使用,有人觉得是精于底层原理,也有人觉得

Read More

【JVM】10道不得不会的JVM面试题-多极客编程

我是JavaPub,专注于面试、副业,技术人的成长记录。 以下是 JVM 面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。 评论区见 @[toc] JVM 基于JDK8 1. 说一说JVM的主要组成部分 点击放大看,一图胜千文 方法区和堆是所有线程共享的内存区域;而虚拟机栈、本地方法栈和

Read More

JVM | 第2部分:虚拟机执行子系统《深入理解 Java 虚拟机》 #yyds干货盘点#-多极客编程

@[TOC](JVM | 第2部分:虚拟机执行子系统) </font> 前言 参考资料:《深入理解 Java 虚拟机 - JVM 高级特性与最佳实践》 第1部分主题为自动内存管理,以此延伸出 Java 内存区域与内存溢出、垃圾收集器与内存分配策略、参数配置与性能调优等相关内容; 第2部分主题为虚拟机执行子系统,以此延伸出 class 类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎等

Read More

生产环境频繁内存溢出,原来就是因为这个“String类”-多极客编程

摘要:如果在程序中创建了比较大的对象,并且我们基于这个大对象生成了一些其他的信息,此时,一定要释放和这个大对象的引用关系,否则,就会埋下内存溢出的隐患。本文分享自华为云社区《​​【高并发】你敢信?String类竟然是导致生产环境频繁内存溢出的罪魁祸首!!​​》,作者: 冰 河 。最近,一名小伙伴跟我说:他写的程序在测试环境一点问题没有,但是发到生产环境却会频繁出现内存溢出的情况,这个问题都困扰他一

Read More

诡异的JVM永久代溢出-多极客编程

内容简介生产上两个应用无缘无故的出现Perm区OOM,近期也没变动,用VisualVM点垃圾回收也能对Perm区回收,所以很奇怪。后来才发现,原来是别人通过instrument方法attach了一个agent到JVM进程上,扫描了所有的class对象并且没释放,导致perm区溢出。本文详细介绍perm区为何持续增长,以及通过简单示例介绍instrument如何使perm区溢出的。问题描述很久没有变

Read More

【JAVA SE】—— 数组(详细!!!)-多极客编程

@TOC ✨一、 数组基本用法 1.数组的作用 能让我们批量创建相同类型的变量 2.数组的创建 下面这三种创建方式都是可以的 int[] arr1=new int[] {1,2,3,4}; int[] arr2={1,2,3,4}; int[] arr3=new int[4]; 3. 数组的使用 (1)获取长度 注意事项 使用 arr.length 能够获取到数组的长度. . 这个操作为成员

Read More

第12篇-认识CodeletMark-多极客编程

InterpreterCodelet依赖CodeletMark完成自动创建和初始化。CodeletMark继承自ResourceMark,允许自动析构,执行的主要操作就是,会按照InterpreterCodelet中存储的实际机器指令片段分配内存并提交。这个类的定义如下: class CodeletMark: ResourceMark { private: InterpreterCodele

Read More

图解带你掌握`JVM`运行时核心内存区-多极客编程

摘要:堆空间差不多是最大的内存空间,也是运行时数据区最重要的内存空间。堆可以处于物理上不连续的内存空间,但在逻辑上它应该被视为连续的。本文分享自华为云社区​​《醒酒菜:动画图解核心内存区--堆》​​,作者: 阿Q说代码。堆的概述一般来说:一个Java程序的运行对应一个进程;一个进程对应着一个JVM实例(JVM的启动由引导类加载器加载启动),同时也对应着多个线程;一个JVM实例拥有一个运行时数据区(

Read More

第10篇-初始化模板表-多极客编程

在 第9篇-字节码指令的定义 我们介绍了字节码指令并且将字节码指令相关的信息都存储到了相关数组中,只需要通过Opcode就可从相关数组中获取对应的信息。在init_globals()函数中调用bytecodes_init()函数初始化好字节码指令后会调用interpreter_init()函数初始化解释器。函数最终会调用到TemplateInterpreter::initialize()函数。这个

Read More

#yyds干货盘点#阿里二面面试题:请你说一下对受检异常和非受检异常的理解?-多极客编程

面试题: 请你说一下对受检异常和非受检异常的理解? 面试考察点 考察目的: 异常的设计,在程序开发中时非常重要的。好的异常设计能够合理清晰的反馈程序的问题,提供排查思路。同时,还能够很好的处理资源回收问题。所以作为有经验的程序员,必须要了解异常,以及异常的差异和特性。 考察人群: 工作3年以上,3年左右一般都会参与项目中部分核心代码的编写。 背景知识分享 在Java中,所有的异常都继承自jav

Read More