
jvm
文章平均质量分 90
java虚拟机学习总结
斜阳雨陌
你有多努力,就有多特殊!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java Agent
一、什么是 Java Agent ?笼统地来讲,Java Agent 是一个统称,该功能是 Java 虚拟机提供的一整套后门。通过这套后门可以对虚拟机方方面面进行监控与分析。甚至干预虚拟机的运行。Java Agent 又叫做 Java 探针,Java Agent 是在 JDK1.5 引入的,是一种可以动态修改 Java 字节码的技术。Java 类编译之后形成字节码被 JVM 执行,在 JVM 在执行这些字节码之前获取这些字节码信息,并且通过字节码转换器对这些字节码进行修改,来完成一些额外的功能,这种就是转载 2021-07-11 16:52:50 · 1076 阅读 · 0 评论 -
【精心总结】java内存模型和多线程必会知识
内存模型(1)java内存模型到底是个啥子东西?java内存模型是java虚拟机规范定义的一种特定模型,用以屏蔽不同硬件和操作系统内存访问差异,让java在不同平台中能达到一致的内存访问效果,是在特定的协议下对特定的内存或高速缓存进行读写访问的抽象。我来简单的总结成一句话就是:java内存模型是java定义的对计算机内存资源(包含寄存器、高速缓存、主存等)的读写方法和规则。 注意上面的这些定义...原创 2020-04-19 23:50:46 · 714 阅读 · 0 评论 -
Minor GC和Full GC
我们在日常开发中可能经常会听大家谈论GC,但是其实很多人对GC的种类其实并不是很了解,接下来我们简单介绍下Minor GC和Full GC及他们的区别。MinorGC:也可以叫作新生代GC,指的是发生在新生代的垃圾收集动作。因为新生代中对象大部分的生命周期都很短,都是朝生暮死,所以MinorGC十分频繁,但因为需要移动的对象比较少及采用了“复制”回收算法,所以回收速度非常快。FullGC:...原创 2020-04-12 16:28:19 · 838 阅读 · 0 评论 -
Thread.yield()
(一)java yield()方法注释:/** * A hint to the scheduler that the current thread is willing to yield * its current use of a processor. The scheduler is free to ignore this * hint. * * <p> Yield...原创 2019-01-04 12:06:45 · 10160 阅读 · 7 评论 -
Synchronization and Object Locking
One of the major strengths of the Java programming language is its built-in support for multi-threaded programs. An object that is shared between multiple threads can be locked in order to synchronize...转载 2019-11-10 18:27:52 · 388 阅读 · 0 评论 -
JVM对象占用内存计算
大家都知道,jvm中对象实例存储在堆中,对象的引用存储在栈中,而对象的元数据(类型数据)存储在方法区。在我们进行内存优化的过程中经常需要了解每个对象占用的内存大小。接下来我将介绍对象占用内存大小的计算方式,首先从java对象模型说起。Java的对象模型java是面向对象的语言,每个对象都属于某个类。在HotSpot虚拟机中对象采用的是oop-klass模型。其实原理很简单:就是在方法区中生...原创 2019-11-05 22:31:34 · 1806 阅读 · 0 评论 -
占用较多堆外内存的区域
(1)Director Memory主要在nio中会使用,在内存不足时会抛出OOM或者OOM:Direct buffer memory。(2)线程堆栈为每个线程分配的栈空间,用于保存局部变量,执行程序代码。内存不足时可能抛出StackOverflowError或者OOM:unable to create new native thread(即没有足够空间建立新的线程)。(3)socket缓...原创 2019-10-19 16:41:35 · 504 阅读 · 0 评论 -
Java程序编译运行过程
整体流程1.首先由源程序文件编译成class文件。注意这里的源程序并不仅限于java程序,其他语言如果能够编译成class文件,并且符合jvm规范也能够在jvm上运行。2.jvm将class文件拷贝到内存,解释成相应的机器语言运行。我们常用的hotspot虚拟机在运行时会挑选出一些热点代码(以函数为单位),将这些热点代码直接编译成机器码存储起来,下次执行的时候,就不需要jvm解释,而是直接...原创 2019-07-21 16:23:21 · 1118 阅读 · 0 评论 -
java对象占用内存大小?
一个不包含任何内部成员变量的空Object大约占33byte,若增加成员变量,则增加相应大小的内存占用。测算方式:设置jvm的堆大小为1m,在堆中不停new不含任何成员变量的OOMObject对象,直到堆内存溢出。如下图,在创建31351个对象后内存溢出。则1m = 1024*1024byte = 1048576 byte,1048576 byte 除31351 = 33.44bye,一个空...原创 2019-06-16 16:11:06 · 1097 阅读 · 1 评论 -
java ++i、i++、i++ + ++i、i++ + i++原理
先上代码:public static void main(String args[]) { int A = 1; int B = 10; int C = 100; int D = 1000; System.out.println(A++); System.out.println(++B);...原创 2019-06-01 20:13:38 · 693 阅读 · 0 评论 -
JVM中GC Root对象有哪些?
众所周知,我们目前最常用的虚拟机hotspot使用可达性分析来进行垃圾回收,而可达性分析需要依赖GC Root。下面我就来可以作为GC Root的对象。(一)虚拟机栈中引用的对象虚拟机栈中的引用的对象可以作为GC Root。我们程序在虚拟机的栈中执行,每次函数调用调用都是一次入栈。在栈中包括局部变量表和操作数栈,局部变量表中的变量可能为引用类型(reference),他们引用的对象即可作为...原创 2019-10-04 17:21:47 · 12477 阅读 · 2 评论 -
JVM中安全点safePoint有哪些?
安全点是jvm选来进行GC的线程中断点。线程在执行到安全点后询问GC标志位,若标志位标识将要进行GC,则程序主动中断挂起线程等待GC。安全点的选定基本上是根据"是否具有让程序长时间执行的特征"为标准进行选定的。目前会产生安全点的主要有:1.方法调用、2.循环跳转、3.异常跳转。...原创 2019-10-04 18:34:35 · 861 阅读 · 0 评论