JVM
damokelisijian866
这个作者很懒,什么都没留下…
展开
-
Java同步容器和并发容器
我们知道,普通的集合类ArrayList、LinkedList、HashMap等等是线程不安全的,即:在多线程共同操作这些类对象时,会发生竞态条件或者异常。如果我们需要在多线程下使用这些集合类,就需要显示地进行同步操作(用syncrhoized关键字等对集合类的操作代码加同步锁)。如果不想这么麻烦,我们可以送Java提供的同步容器,同步容器默认是线程安全的,对它的操作都是已经默认加了同步锁的。一...原创 2020-03-12 23:50:58 · 433 阅读 · 4 评论 -
关于Java堆内存是线程共享的吗?
首先,在JVM的内存结构中,比较常见的两个区域是堆内存和栈内存关于这两个概念的介绍一般如下: 1、堆是线程共享的内存区域,栈是线程独享的内存区域。 2、堆中主要存放对象实例,栈中主要存放各种基本数据类型、对象的引用。但是其实以上两个结论并不是完全正确的。在解释原因之前首先抛出个问题:Java对象的内存分配过程是如何保证线程安全的?Java对象的内存分配过程是如何保证线程安全的?J...原创 2020-03-12 00:22:47 · 743 阅读 · 2 评论 -
为什么Java中静态方法不能调用非静态方法和变量?
这个问题在学习jvm的时候会遇到过首先看个例子一 例子我们先看效果效果:我们在静态方法main中调用非静态变量或者是方法都会报错。我们反过来看看反过来没有问题,这是什么原因呢?二、原因解释我们需要首先知道的是静态方法和静态变量是属于某一个类,而不是属于类的对象。先从jvm说起:这是一张类加载的生命周期图1、加载:加载是“类加机制”的第一个过程,在加载阶段,虚拟机主要完成...原创 2020-03-09 22:32:42 · 747 阅读 · 7 评论 -
JVM调优工具
前言给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照、堆转储快照等。经常使用适当的虚拟机监控和分析的工具可以加快我们分析数据、定位解决问题的速度。目录一、jps:虚拟机进程状况工具二、jstat:虚拟机统计信息监视工具三、jmap:Java内存印象工具四、jhat:虚拟机堆转储快照分析工具...原创 2019-10-20 17:05:26 · 333 阅读 · 0 评论