随笔分类 -  JVM

摘要:一、前言 volatile的关键词的使用在JVM内存模型中已是老生常谈了,这篇文章主要结合自己对可见性的一些认识和一些直观的例子来谈谈volatile。文章正文大致分为三部分,首先会介绍一下happen-before,接着讲解volatile的一些使用场景,最后会附上一些例子来论证使用与不使用vol 阅读全文
posted @ 2017-08-24 00:29 陈其苗 阅读(2627) 评论(4) 推荐(0)
摘要:JConsole远程连接还是有一点坑的。这里记录一下配置过程,好记性不如烂笔头。 1.在远程机的tomcat的catalina.sh中加入配置: 2.配置权限文件 monitorRole QED controlRole chenqimiao 3.配置权限文件为600 这样基本配置就结束了,下面说两个 阅读全文
posted @ 2016-12-06 17:38 陈其苗 阅读(31302) 评论(5) 推荐(1)
摘要:在所有编程语言领域,我想字符串应该是地球上最常用的表达手段了吧。 在java的世界里,String是作为类出现的,核心的一个域就是一个char数组,内部就是通过维护一个不可变的char数组,来向外部输出的。 这是jdk一段String类定义,首先类是final,表明类不可被继承;核心域是privat 阅读全文
posted @ 2016-12-03 00:18 陈其苗 阅读(3323) 评论(4) 推荐(1)
摘要:随着互联网的蓬勃发展,越来越多的互联网企业面临着用户量膨胀而带来的并发安全问题。本文着重介绍了在java并发中常见的几种锁机制。 1.偏向锁 偏向锁是JDK1.6提出来的一种锁优化的机制。其核心的思想是,如果程序没有竞争,则取消之前已经取得锁的线程同步操作。也就是说,若某一锁被线程获取后,便进入偏向 阅读全文
posted @ 2016-05-23 16:30 陈其苗 阅读(27333) 评论(1) 推荐(4)
摘要:本节只是介绍实战部分,具体的理论参数,请自行百度。 所需工具:linux服务器 Jmeter测试工具 xshell 一个web应用 Tomcat的JVM参数可以配置在catalina.sh,如果是在window上可以配置.bat文件 配置1: 这里 我配置了一个gc日志路径为/home/log/gc 阅读全文
posted @ 2016-05-19 13:55 陈其苗 阅读(4104) 评论(4) 推荐(1)
摘要:除了自定义的类加载之外,jvm存在三种类加载器,并以一种父委托的加载机制进行加载。 --启动类加载器,又称根加载器,是一个native的方法,使用c++实现。在java中我们用null标识,用于加载jdk自带的类。 --扩展类加载器,用于加载jdk扩展类 --系统类加载器,用于加载classpath 阅读全文
posted @ 2016-02-17 18:25 陈其苗 阅读(555) 评论(0) 推荐(0)
摘要:先看一段代码吧! 输出结果可知吗? 我第一次看到的时候很肯定的认为是 FinalTest0 static block 2 然并卵~正确的结果是: 2 我只能说心好累,好吧?再看一段代码: 结果是: FinalTest0 static block8 这两段代码的区别就在于 a的赋值过程。 6/3 对于 阅读全文
posted @ 2016-02-15 16:18 陈其苗 阅读(298) 评论(0) 推荐(0)
摘要:首先我们先看一个示例程序: 猜猜输出的结果是什么?据说80%的java程序猿都会犯的错误! 10 就是这样一个结果,我们先不说为什么。接着讲我们的类加载器. 类的加载大致分为三个部分:加载,连接,初始化。 加载:查找并加载类的二进制数据 连接:1.验证(确保被加载类的准确性) 2.准备(为类的静态变 阅读全文
posted @ 2016-02-02 19:42 陈其苗 阅读(792) 评论(4) 推荐(1)
摘要:Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍。 一、Java JVM内存介绍 JVM管理两种类型的内存,堆和非堆。按照官方的说法:“ 阅读全文
posted @ 2016-01-15 14:08 陈其苗 阅读(1031) 评论(0) 推荐(0)