
JVM
it小奋
这个作者很懒,什么都没留下…
展开
-
JVM之运行时数据区域
JVM之运行时数据区域概述:Java虚拟机在运行过程中会将它管理的内存划分为若干不同的数据区域,这些区域在JVM运行时都有各自的用途,创建和销毁时机,有的内存区域随着虚拟机进程的启动而存在,有些区域则依赖于用户进程的启动而启动,销毁而销毁。必要性:理解JVM运行时数据区域有助于进行JVM性能优化,了解JVM常见的内存溢出的集中情况,以及对JVM性能进行优化。运行时数据区域:根据Java原创 2016-06-04 14:41:45 · 565 阅读 · 0 评论 -
TheadLocal 原理及实践
目录ThreadLocal实现原理使用场景使用实例ThreadLocal 线程本地存储,为变量在每个线程中都创建一个副本(在Thread中存储以ThreadLocal为key的值),每个线程可以访问自己内部的副本变量。实现原理 ThreadLocal内部用ThreadLocalMap来存储变量值,实际上线程本地变量存储在Thread类...原创 2019-05-14 08:53:24 · 979 阅读 · 0 评论 -
JVM常用工具,内存结构,垃圾收集,锁学习笔记(一)
JVM(JDK1.7)查看JVM进程&参数JPS 列出在主机上执行的虚拟机,语法jps [ options ] [ hostid ] jps-m -->输出传递给JVM主方法的参数 jps -v -->输出传递给JVM的参数 通常以-X -D -XX等开始的标识符JINFO 查看JVM进程的配置信息(包...原创 2018-06-19 08:32:29 · 257 阅读 · 0 评论 -
JVM常见分析工具-1
原创 2017-06-24 18:23:58 · 247 阅读 · 0 评论 -
Java Jar冲突解决
jar冲突场景:不同版本间的弱依赖,不同组件依赖同一个jar的不同版本, 其中一个版本即可, 一般发生在一些向下兼容的类库中,通常情况下可以解决问题.不同版本间的强依赖关系,不同组件强依赖与两同一个jar的不同版本,由于版本跨度过大,导致高版本的jar并不兼容低版本中的方法,不能通过 来解决冲突.对于第一种情况,毋庸置疑由于不同版本间兼容排除其它保留一个即可.对第二种情况而言就原创 2017-03-11 16:30:40 · 2243 阅读 · 0 评论 -
Java 与线程
线程的实现:线程是比进程更轻量级的调度执行单位,各个线程既可以共享进程资源也可以独立调度,实现线程的主要方式有三种:使用内核线程实现,使用用户线程实现和使用内核线程加轻量级进程混合实现。1.使用内核线程(KLT)实现,内核线程即直接由操作系统内核支持的线程,程序一般不会直接使用内核线程,而是使用内核线程的高级接口——轻量级进程(LWP),每个轻量级进程都有一个内核线程的支持,这种轻量级进程与内原创 2016-06-13 09:51:46 · 306 阅读 · 0 评论 -
Java内存模型
Java内存模型高速缓存:由于自算计的存储设备与处理器的运算速度有几个数量级的差距,因而现代计算机都不得不采用缓存技术来尽可能的接近处理器的运算速度,缓存的作用:将运算需要的数据复制到缓存中,使得处理器的运算能快速进行,运算结束后在将数据从缓存中同步回主内存中。缓存一致性:多个处理器的运算任务涉及到同一块内存区域时,可能导致各自的缓存数据不一致。为了解决不一致性的问题,需要各个处理器访问缓原创 2016-06-07 10:34:34 · 302 阅读 · 0 评论 -
JVM之类加载器
JVM之类加载器1.类加载器:通过一个类的全限定名称来获取描述此类的二进制字节流的过程,该动作在虚拟机的外部实现,目的是方便应用程序自己决定如何获取所需要的类,从Java虚拟机的角度只存在两种不同的类加载器:启动类加载器(C++语言实现),其它(Java语言实现,独立于虚拟机外部继承自抽象类java.lang.ClassLoader)。从开发人员角度,大部分Java程序会用到以下三种类加载原创 2016-06-06 11:11:12 · 267 阅读 · 0 评论 -
JVM之类加载机制
JVM之类加载机制如上图所示,类从被加载到虚拟机内存中开始,到卸载为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用、和卸载7个阶段。其中验证、准备、解析统称为连接。加载、验证、准备、初始化和卸载的顺序是确定的,依次开始,解析阶段则不一定,有些情况况下可以在初始化之后再开始,这样是为了支持Java语言的运行时绑定(对象上传等操作)。上述阶段通常都是交叉的混合进行的,通常会原创 2016-06-04 22:15:47 · 273 阅读 · 0 评论 -
Java之Volatile关键字
Java之volatile关键字volatile关键字:Java 虚拟机提供的最轻量级同步机制,volatile类型的变量具备如下两种特性。一是保证变量对所有线程的可见性,即当一条线程修改了这个变量的值,新值对其它线程来说是可以立即得知的,普通变量则不能。由于volatile变量只保证可见性,因此在以下场景中任然需要通过加锁(使用synchronized 或者 java.util.conc原创 2016-06-08 17:18:41 · 345 阅读 · 0 评论 -
记一次JVM线程池配置不合理导致的JVM挂掉问题排查
原则一——尽一切可能保护有限的资源。问题描述现场反馈,服务启动起来有一段时间就自己挂掉了,大概几十秒到几分钟,技支反馈日志突然就中断了,看不到任何错误的迹象;原因预估我确信,经验不同的人排查问题的思路差异是非常大的,庆幸的是这些可以借鉴,我们应该总结自己的经验,借鉴旁人的经验; 我当时就想怎么会没日志呢!是不是他们找错地方了!我得亲自看看! 日志里面一定能找到我...原创 2019-05-12 13:13:34 · 2005 阅读 · 0 评论