
java虚拟机:JVM
文章平均质量分 61
ZtCling
热爱代码,欢迎交流
展开
-
native关键字
1.native关键字的作用:带了native关键字说明java的作用范围达不到了,回去调用底层C语言的库2.native修饰方法的运行过程:带了native关键字的方法会进入本地方法栈(Native Method Stack)调用本地方法接口(JNI)然后调用本地方法库3.本地方法接口(JNI)的作用:为了扩展java的使用,融合不同的编程语言为java所用4.诞生背景:java诞生的时候C和C++横行,想要立足必须要有调用C,C++的程序,于是才在内存中开辟了一块标记区域登记原创 2022-04-01 13:32:03 · 792 阅读 · 0 评论 -
沙箱安全机制
目录1.什么是沙箱?2.什么是沙箱机制?3.沙箱机制的发展jdk1.0安全模型jdk1.1安全模型jdk1.2安全模型jdk1.6安全模型4.沙箱的基本组件1.什么是沙箱?沙箱是一个限制程序运行的环境(沙箱主要限制系统资源的访问,如cpu,内存等等。不同级别的沙箱对这些资源的访问限制也不一样)2.什么是沙箱机制?就是将java代码限定在虚拟机(jvm) 特定的运行范围中,并且严格限制代码对本地系统资源的访问,通过这样的措施来保证对代码的有效隔离,防止对系统原创 2022-03-31 13:54:44 · 5519 阅读 · 0 评论 -
双亲委派机制
作用:为了保证安全1.类加载其收到加载请求2.将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器3.启动类加载器检查是否能加载当前这个类,能加载就结束,使用当前的加载器,否则,抛出异常通知子类加载器进行加载4.重复步骤35.如果都找不到就会报一个错Class Not Found -具体流程: 1.当AppClassLoader加载一个class时,它不会尝试加载这个类,而是把类加载请求委派给父类加载器ExtClassLoader去完成。原创 2022-03-30 12:51:05 · 410 阅读 · 0 评论 -
JVM一HotStop对象的内存布局和访问定位
1.对象的内存布局在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头:包括两类信息1.第一类是用于存储对象自身的运行时数据,如哈 希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部 分数据的长度在32位和64位的虚拟机(未开启压缩指针)中分别为32个比特和64个比特,官方称它 为“Mark Word”。Mark Word原创 2022-03-20 15:31:07 · 1719 阅读 · 0 评论 -
JVM一HotSpot虚拟机对象的创建
java运行过程中无时无刻都有对象在创建第一步当我们遇到一个new指令时,先检查是否能在常量池定位到。如果有就直接用了,如果没有就先加载。第二步加载完成之后分内存。(一个对象的大小在加载后就知道了,为对象分配空间相当于把一块确定大小的内存块从Java堆中划分出来。)分配内存有两种方式,分别在内存是否规整的情况下使用1.如果说堆中内存规整,所有使用过的内存都被放在一边,空闲内存都放在另一边,中间放着一个指针作为分界点的指示器,那么分配内存就仅仅是把指针向空闲空间方向挪动一段..原创 2022-03-20 14:47:10 · 1108 阅读 · 0 评论 -
JVM—分代收集理论和垃圾收集算法
一.分代收集理论1.弱分代假说:绝大多数对象都是朝生夕灭的。2.强分代假说:熬过越多次垃圾收集过程的对象就越难以消亡。这两个假说奠定了多款垃圾收集器统一的设计原则:收集器应该将java堆划分成不同的数据区域,然后依据其年龄进行回收。(通俗来说死贼快的放一起,难以消亡放一起),以较低的频率回收空间,兼顾了垃圾收集的时间开销和内存空间的效益。4.新生代和老年代:每次垃圾收集时都发现有大批对象死去,而每次回收后存活的少量对象,将会逐步晋升到老年代中存放。(新生代就是死贼快的,老年代就是不容易消亡的原创 2022-03-19 13:40:28 · 331 阅读 · 0 评论 -
JVM—判断对象是否存活和垃圾回收策略
概述:在堆里面存放着Java世界中几乎所有的对象实例,收集垃圾时第一件事情就是判定这个对象时生还是死。(“死去”即不可能再被任何途径使用的对象。)两种判断对象是否存活的算法一.引用计数算法 原理:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。优劣:引用计数算法(Reference Counting)虽然占用了一些额外的内存空间来进行计数,但它的原理简单,判定效率也很高在.原创 2022-03-15 23:52:14 · 548 阅读 · 0 评论 -
JVM—运行时数据区域
目录1.运行时数据区域概述2.具体内容2.1 线程独享的2.2 线程共享的1.运行时数据区域概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是 依赖用户线程的启动和结束而建立和销毁。2.具体内容Java虚拟机所管理的内存将会包括以下几个运行时数据区域2.1 线程共享的数据区2.1.1 方法区2.1.2...原创 2022-03-15 14:50:31 · 1344 阅读 · 0 评论