- 博客(16)
- 资源 (5)
- 收藏
- 关注
原创 concurrent 和 parallel; 并发和并行的区别
在看g1gc文章的时候,把concurrent and parallel phases翻译成并发和并行阶段,感觉这2个词不是一个意思吗?为啥他原始文档要强调这2个词呢。深究一下,果然不是一个意思。总体概念:在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调用机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent)。而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时运行的方式叫做并行(p
2020-06-28 17:16:30 1124
原创 G1 GC 调优学习 了解有关如何调整和调整G1 GC以进行评估,分析和性能的信息。
G1 GC是Java HotSpot虚拟机的低暂停,服务器风格的分代垃圾收集器。G1 GC使用并发(concurrent)和并行(parallel)阶段来实现其目标暂停时间并保持良好的吞吐量。当G1 GC确定需要进行垃圾收集时,它将首先收集存活数据最少的区域(垃圾优先处理)。垃圾收集器(GC)是一种内存管理工具。G1 GC通过以下操作实现自动内存管理:在年轻一代分配对象,并将老化的对象提升为老一代。 在并发(并行)标记阶段,在老一代中查找存活对象。当Java堆总占用量超过默认阈值时,Java H.
2020-06-27 15:37:56 2859
翻译 G1 GC 全称 Garbage-First Garbage Collector
介绍Oracle JDK 7.4或更高版本完全支持Garbage-First(G1)垃圾收集器。G1收集器是server-style的垃圾收集器,适用于具有大内存的多处理器计算机。它极有可能满足垃圾回收(GC)暂停时间目标,同时实现高吞吐量。全堆操作(例如全局标记)与应用程序线程并行执行。这样可以防止与堆或活动数据大小成比例的中断。技术说明G1收集器通过多种技术实现了高性能和暂停时间目标。堆被划分为一组大小相等的堆区域,每个堆区域都有一个连续的虚拟内存范围。G1执行并发全局标记阶段,以确定整
2020-06-27 14:39:09 581
原创 maven 项目pom.xml中获取git 信息--git-commit-id-plugin 插件
使用maven项目+git来管理项目,现在想在发版的时候,知道包实际使用的git记录的版本号。<plugin> <groupId>pl.project13.maven</groupId> <artifactId>git-commit-id-plugin</artifactId> <version>2.1.5</version>
2020-06-18 15:29:18 4991
原创 gradle git 版本号--自定义打jar包的name
以前这个gradle都是给Android使用的,万万没想到,Java的其它项目也能使用,甚至能替代maven或者说maven和gradle项目是可以互相转换的。还有就是在使用svn来管理项目的时候,每个svn版本都对应一个数字,但是换了git之后,每个提交记录就不是简单的生成个int数字,还是递增的数字了,对应的是个hash值,类似Java对象的hashcode,这个时候就希望,每次项目打包之后,产生出来的jar包带上这个git版本号,虽然不似svn那样一个简单的int数字就能说明版本,但是git的hash
2020-06-17 17:09:41 1560
原创 Java 字符串常量池到底是在PermGen方法区、是在heap堆里面、还是在Metaspace 元空间里面呢?
要是没有实践过别人书本上的理论的话,就还是会说常量池在方法区里面,要是知道方法区已经随jdk升级,被逐步干掉的话,就会看到有的文章说移动到heap堆里面了,还有极少的说移动到Metaspace里面了,产生了分歧。这个时候就需要实践出真知了。/** * 测试 常量池在分区的位置 * * @author LiXuekai on 2020/6/9 */public class StringConstantPoolTest { public static void main(String[]
2020-06-15 17:59:33 11769 18
原创 Java 内存分区之什么是 CCS区 Compressed Class Space 类压缩空间
了解到什么是ccs区,一般都是实际执行了jstat -gc 之后,看Java堆的gc相关的几个分区的gc信息,前面的s0,s1,e区,o区,还好猜,研究过分区的,不难猜出来这个分区是啥意思,M区虽然不知道是Metaspace元空间,但是错把这个M区当成Method area 方法区,也说的过去。这个ccsc就不好说了。之前的看的文章都没人说这个区是啥。Java之jstat的用法:Java虚拟机 统计信息查看 工具不了解这几个简写单词是啥意思的,可以参考一下之前的这个jstat的文章,里面对每一列
2020-06-15 15:47:50 10545 7
原创 Java 内存分区之 堆外内存 Metaspace 元空间 取永久代PermGen 而代之
在稍微了解Java内存分区的时候,大多数文章都是出自深入理解jvm这本书,上来就是给你分了 程序计数器,Java虚拟机栈,本地方法栈,堆,方法区,还有个直接内存,还说方法区里面有个常量池。在写这本书的时候,jdk还在1.6,但是现在2020年jdk都已经jdk14了,虽然还没普及jdk14,但是估计以后都会使用的吧,就像现在基本最低都要使用jdk1.8一样。1.7是在2011年发布的,1.8是14年发布的,时至今日,内存分区已经有了些许变化。虽然理论还是大差不差的。永久代主要存放以下数据:JVM i
2020-06-15 11:50:42 3456
原创 -xms和-xmx设置完之后,堆的大小就真的是设置的大小吗?
前面看了jdk的几个查看jvm信息的命令,然后只看不动手,不用回头就忘记的干干净净了。还是实际使用一下,然后顺便结合着jvm的内存分区,再深层次的记录一下几个分区的名称、大小、gc器、等等。首先,查看一个进程,筛选一个进程,就可以使用jps -mvl ,m让他带上方法参数,v带上设置的jvm参数,l显示完整的运行main方法名称。完了之后,就可以看到这个pid的好多信息了。但是这个看到的不全,还是有些虚拟机默认的参数是看不到的,这个时候已经拿到了pid,再使用jinfo -flags pid,就会显
2020-06-13 17:33:56 2548 1
原创 Java内存中指令重排序导致的线程问题,以及 volatile 作用之禁止内存指令重排序的代码实例
一般在看JMM(Java内存模型)的时候,里面有代码会因为种种原因优化,导致指令重排。也没实际见过。也没法验证这个说法。说是volatile这个关键词可以1,禁止指令重排,2,内存可见。这都是理论,回头就忘记了。下面用实际例子,切身体会一下他这个重排序。这个Java代码例子充分的见识了指令重排序对多线程的影响,同时也是实际Java代码例子说明volatile可以禁止指令重排序,对多线程开发的作用也不小。
2020-06-12 12:33:06 948
原创 jstack的使用:Java栈追踪工具
jstack命令打印指定Java进程、核心文件或远程调试服务器的Java线程的Java 栈跟踪。对于每个Java框架,将打印完整的类名、方法名、字节码索引(BCI)和行号(如果可用)。使用-m选项,jstack命令使用程序计数器(PC)打印所有线程的Java和本机帧。对于每个本机帧,打印距离PC最近的本机符号(如果可用)全称: stack trace for java形式:jstack -option pid -F Force a stack dump w...
2020-06-11 16:35:38 735
原创 jmap的用法:Java 内存映像工具 jmap -heap pid
jmap [option] <pid>关于 option 的选项,有下面这么几个1,jmap -dump:[live,] format=b, file=filename pidjmap -F -dump:format=b,file=tomcat.txt 113089以hprof二进制格式转储Java堆到指定filename tomcat.txt 的文件中。live子选项是可选的。如果指定了live子选项,堆中只有活动的对象会被转储。想要浏览heap dump,你可以使用j..
2020-06-11 10:52:36 5488
原创 jvm 之各种参数及表达的意思
内存相关设置-Xms:初始堆(Heap)大小,默认3670k。当空闲堆内存小于40%时,JVM 就会增大堆内存直到-Xmx 所设置的最大值,可以通过-XX:MinHeapFreeRatio=n 设置其比例。-Xmx:最大堆(Heap)大小,默认64m。当空闲堆内存大于70%时,JVM 会减少堆内存直到-Xms 所设置的最小值,可以通过-XX:MaxHeapFreeRatio=n 设置其比例。-Xmn:新生代大小,增大新生代后会相应减小老年...
2020-06-10 17:08:17 569
原创 jinfo的用法:Java配置信息查看工具
实时查看和跳转jvm的各项参数。使用jps -v 可以查看虚拟机启动时,显示指定的参数列表,但是未指定的系统默认的参数就看不到了。就可以使用jinfo -flag 进行查看。 jinfo [ option ] pid jinfo [ option ] executable core jinfo [ option ] [ servier-id ] remote-hostname-or-IP主要有下面几个: 1,no-option ...
2020-06-04 18:32:19 957
原创 jstat各种用法以及结果中每一列的详细含义描述
1, -class 监视类装载、卸载数量,总空间、类装载所耗费时间2,-compiler 输出jit编译器编译过的方法耗时等信息3,-printcompilation 输出已经被jit编译的方法4,-gc 监视Java堆状况,eden,2个s区,old,方法区等容量,gc时间等情况5,-gccapacity 6,-gcutil 已使用空间占此空间的百分比7,-gccause 输出导致上次gc的原因8,-gcnew 统计新生代的gc情况9, -gcnewcapacity 各个最大和最新
2020-06-04 11:24:45 3583
大众点评sdk例子
2015-08-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人