JVM
文章平均质量分 85
Keeling1720
这个作者很懒,什么都没留下…
展开
-
系统的直接内存
文章目录直接内存定义直接内存的基本使用内存溢出直接内存的释放及其原理直接内存定义直接内存(Direct Memory):直接内存是系统的直接内存,常见于NIO操作时,用于数据缓冲区。分配回收成本较高,但读写性能高,不受JVM内存回收管理。下面,我们说一下啊为什么使用直接内存读写的性能会比较高。请看下图:这里我们知道,我们的Java是运行在我们的虚拟机中的,通过虚拟机命令再去间接调用系统的内核函数,即我们上面看到的用户态跟内核态。(可以简单想象成,Java代码运行后调用本地方法区的代码,然后本地方原创 2022-01-28 23:57:32 · 1226 阅读 · 0 评论 -
StringTable的性能调优
文章目录StringTable的性能调优1、通过-XX:StringTableSize=桶个数调整2、考虑是否将字符串对象入池StringTable的性能调优1、通过-XX:StringTableSize=桶个数调整我们前面说过StringTable是靠我们的HashTable来实现的。即,当我们的空间足够大的时候,我们的数据就会比较分散,查询的效率也会因此降低,反之,当我们的空间比较小的时候,我们的数据就会比较集中,查询的效率也会因此提高。当然了,StringTable 的空间大小并不是越小越好,太原创 2022-01-26 01:07:21 · 557 阅读 · 0 评论 -
JVM的内存结构(下)——堆和方法区
文章目录JVM的内存结构4、堆4.1、定义4.2、内存溢出4.3、内存诊断5、方法区5.1、定义5.2、组成5.3、内存溢出5.4、运行时常量池5.5、StringTable(串池)JVM的内存结构4、堆4.1、定义堆(Heap):通过 new 关键字创建出来的对象都会使用堆内存。特点:1、线程共享,堆中对象都需要考虑线程安全问题2、有垃圾回收机制4.2、内存溢出废话不多说,代码来一波。先来一个堆内存溢出的例子:import java.util.ArrayList;import jav原创 2022-01-21 19:05:11 · 1035 阅读 · 0 评论 -
JVM的内存结构(上)——程序计数器、虚拟机栈、本地方法栈
文章目录JVM的内存结构1、程序计数器(PC Register)2、虚拟机栈(JVM Stacks)2.1、定义2.2、栈内存溢出2.3、线程运行诊断3、本地方法栈(Native Method Stacks)JVM的内存结构1、程序计数器(PC Register)作用:记住下一条jvm指令的执行地址如下图:我们打的每一条java代码,其实都是在底层执行JVM的指令。每条指令都有其对应的地址,前面说过了,解释器的作用就是逐条执行我们的代码(JVM指令),那么,解释器怎么知道下一条要执行的指令是哪条呢?原创 2022-01-21 18:32:23 · 1087 阅读 · 0 评论 -
JVM简介
文章目录JVM简介1、什么是JVM2、JVM的组成部分JVM简介1、什么是JVMJVM:Java Virtual Machine(java虚拟机),是java的运行环境。(java二进制字节码的运行环境)使用JVM的好处是:1、跨平台2、自动内存管理与垃圾回收机制3、多态那么,jvm、 jre 和 jdk 的区别是啥呢?请看下图:普通用户只是运行java程序的话,只需要装jre即可。开发人员则需要安装jdk。要想长远发展与更好地开发,我们就得学好我们的JVM,理解底层的实现原理。这里原创 2022-01-21 18:13:50 · 294 阅读 · 0 评论