[Toc] 源码 由源码可知。 第一:Objcet类的clone()方法是一个native方法。native方法的执行效率一般远高于Java中的非native方法(一般不是java语言所写)。这也解释了为什么要用Object的clone()方法,而不是先new一个类,然后把原始对象复制到新对象中,虽 ...
分类:
编程语言 时间:
2019-10-23 00:02:45
阅读次数:
159
先来看一段简单的代码,稍微有点并发知识的都可以知道打印出结果必然是一个小于20000的值 改进一下,使用jdk给我们提供的原子操作类,达到了我们预想的结果 下面就来探究下jdk为我们提供的原子操作类的原理,基于java native方法实现一个自己原子操作类 实现这样一个类的要点有:1、基于反射机制 ...
分类:
编程语言 时间:
2019-10-15 13:19:17
阅读次数:
76
JVM的内存结构: 线程共享:堆(存放创建的各种对象),方法区(存放类信息,静态变量,常量池) 线程私有:栈(每个线程都有自己的栈空间,存放每个方法的局部变量),程序计数器(记录当前字节码指令的位置,执行到拿哪一条字节码指令),本地方法栈(跟栈类似,不同的是执行的native方法) JVM什么时候会 ...
分类:
其他好文 时间:
2019-10-05 20:31:35
阅读次数:
122
首先下载配置android studio ndk 1.打开sdkManager下载CMake和LLDB 2.配置ndk 项目新建 项目建立完毕后,工程目录如下,cpp文件夹是系统自动生成的 3.自定义 navite方法 接下来开始写自定义的一个native方法,新建一个Hello.java文件,里面 ...
分类:
移动开发 时间:
2019-09-06 01:18:19
阅读次数:
154
JVM总结(2)java内存区域、字节码执行引擎 1、内存区域 程序计数器:知道线程执行位置,保证线程切换后能恢复到正确的执行位置。 虚拟机栈:存栈帧。栈帧里存局部变量表、操作栈、动态连接、方法返回地址。局部变量表又存了各种基本数据类型和对象引用(句柄)。 本地方法栈:为Native方法服务 堆:存 ...
分类:
其他好文 时间:
2019-08-11 10:57:00
阅读次数:
98
程序计数器 记录字节码指令地址,占用空间很小,基本无异常抛出 本地方法栈 native方法区 方法区 所有线程共享,主要存储类的信息,常量池,方法数据,方法代码。 堆内存 JVM所有线程共享,所有对象和数组都在堆上进行分配,这部分内存可通过GC回收,申请不到内存空间会抛出 虚拟机栈 线程私有,随线程 ...
分类:
其他好文 时间:
2019-07-23 14:58:59
阅读次数:
84
(一) 程序计数器(program counter register线程私有) 当前线程执行字节码的行号指示器 1. 分支、循环、跳转、异常处理、线程恢复等依赖计数器完成 2. 当执行的是native方法时,值为空 3. Jvm中唯一没有内存溢出的 (二) Java虚拟机栈(Java virtual ...
分类:
其他好文 时间:
2019-07-06 00:53:07
阅读次数:
130
ok fine you win/ 网上有些人观点是native方法可以不用去管,有个观点帮助到我“取决于厂商的具体实现” 但谷歌翻译。。。于是我去有道🤣给出的例句中的意思“对实现做出决定时发生”, 那看来就是notify方法具体要看实现方式。继续找notify的源码,得出的结果是由hostspot ...
分类:
其他好文 时间:
2019-06-30 19:18:01
阅读次数:
273
jvm主要由三个子系统构成:类加载子系统,运行时数据区(内存模型),执行引擎 运行时数据区主要包括: 1.本地方法栈:登记native方法,执行时加载本地方法库 2.程序计数器:就是一个指针,用来存储指向下一条执行指令的地址,也就是即将要执行的指令代码,是一个非常小得空间,可以忽略不计。 3.jav ...
分类:
编程语言 时间:
2019-06-17 01:13:43
阅读次数:
126
这是我理解的jvm内存模型,这一整块可以简单理解为虚拟内存空间: jvm代码、jvm数据:是运行jvm所用到的代码和数据,并不是我们自己编程得到的代码和数据 direct memory:主要是NIO在使用 CodeCache:即时编译器生成的本地代码 JNI代码:native方法代码 socket缓 ...
分类:
其他好文 时间:
2019-06-15 23:12:14
阅读次数:
235