大家都知道,Java中JVM的重要性,学习了JVM你对Java的运行机制、编译过程和如何对Java程序进行调优相信都会有一个很好的认知。 废话不多说,直接带大家来初步认识一下JVM。 什么是JVM? JVM(Java Virtual Machine)是一个抽象的计算机,和实际的计算机一样,它具有指令 ...
分类:
其他好文 时间:
2019-12-15 23:27:15
阅读次数:
81
1.static的作用和特点可以用来修饰:成员变量,成员方法,代码块,内部类等。具体如下所示修饰成员变量和成员方法被static修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。被static声明的成员变量属于静态成员变量,静态变量存放在Java内存区域的方法区。静态代码块静态代码块定义在类中方法外,静态代码块在非静态代码块之前执行(静态代码块—>非
分类:
编程语言 时间:
2019-12-14 09:54:34
阅读次数:
86
java中内存主要包含4块,堆内存区、栈内存区、常量池、方法区。 堆内存中:存放的是new出的对象(引用类型也是对象,比如String,数组),new出的对象只包含成员变量。 栈内存中:存放的是局部成员变量。对于基本的数据类型存放的是基本变量的值,而对于对象变量,存放的是堆内存的地址。 常量池:存放 ...
分类:
编程语言 时间:
2019-12-12 01:21:22
阅读次数:
112
什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。 小总结 类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构, ...
分类:
其他好文 时间:
2019-12-11 19:03:41
阅读次数:
77
一、查看jvm常用命令jinfo:可以输出并修改运行时的java 进程的opts。 jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。 ...
分类:
其他好文 时间:
2019-12-11 17:10:03
阅读次数:
85
JVM调优主要原理总结: a通过内存设置,减少GC触发。如:存新生代的比例和老年代的比例最好为1:2或者1:3。减少GC对老年代的回收 b设置并行并发垃圾器,减少GC触发时延迟卡顿。 c通过命令行查看优化前后参数,对比分析出优化的具体数据。 d.其他参数常见问题 1)内存溢出解:设置堆内存大小-Xm ...
分类:
其他好文 时间:
2019-12-09 01:08:20
阅读次数:
74
Java由于虚拟机自动内存管理机制的存在,不需为每一个对象进行delete/free方法,不易出现内存泄漏和内存溢出。但如果全权由Java虚拟机控制,出现内存泄漏的问题时,如果不了解虚拟机如何使用内存,会难以排查错误。 1.运行时数据区域 程序计数器、Java虚拟机栈、本地方法栈、堆、方法区、运行时 ...
分类:
编程语言 时间:
2019-12-06 23:20:38
阅读次数:
138
“看对错”和“看利弊”作为两种不同的处世标准,既是看待事物的方法区分,同时也体现了社会认知层次的不同阶段。在汪皎英看来,作为事实判断的“看对错”,和作为价值判断的“看利弊”,二者在处世时皆不可少,顾及家国利益的人往往是做事看对错的人。 中国青年报: 您认为“看利弊”和“看对错”的含义是什么? 汪皎英 ...
分类:
其他好文 时间:
2019-12-04 20:20:44
阅读次数:
148
Java对象中包含的基本数据由它所属的类及其所有超类声明的实例变量组成。只要有一个对 象引用,虚拟机就必须能够快速地定位对象实例的数据。另外,它也必须能通过该对象引用访 问相应的类数据(存储于方法区的类型信息)。因此在对象中通常会有一个指向方法区的指针。 —种可能的堆空间设计就是,把堆分为两部分:一 ...
分类:
其他好文 时间:
2019-12-03 21:31:26
阅读次数:
59
最近想整理一下GC相关的知识和经验,在整理之前下决心先整理一下jvm的内存结构,后续会持续更新。 jvm内存结构重要由两部分组成:线程共享区域与线程私有区域,如下图所示: 其中方法区和堆为线程共享区域,栈与程序计数器为线程私有区域。与操作系统定义的堆栈类似,栈用来存储方法调用时产生的临时变量以及寄存 ...
分类:
其他好文 时间:
2019-12-03 19:57:09
阅读次数:
75