
java
史蒂芬硬条
这个作者很懒,什么都没留下…
展开
-
volatile 关键字
用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。volatile很容易被误用,用来进行原子性操作。在jvm中,其中有一个内存区域是jvm虚拟机栈,每一个线程运行时都有一个线程栈,线程栈保存了线程运行时候变量值信息。当线程访问某一个对象时候值的时候,首先通过对象的引用找到对应在堆内存的变量的值,然后把堆内存变量的具体值load到线程本地内存中,建立一个变量副本,之...原创 2017-06-15 14:44:43 · 234 阅读 · 0 评论 -
BIO、NIO、AIO介绍
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如...原创 2017-06-20 16:40:08 · 231 阅读 · 0 评论 -
Java的Finalizer引发的内存溢出
本文介绍的是Java里一个内建的概念,Finalizer。你可能对它对数家珍,但也可能从未听闻过,这得看你有没有花时间完整地看过一遍java.lang.Object类了。在java.lang.Object里面就有一个finalize()的方法。这个方法的实现是空的,不过一旦实现了这个方法,就会触发JVM的内部行为,威力和危险并存。 如果JVM发现某个类实现了finalize()方法的话,那么见证...翻译 2018-05-03 17:50:33 · 2698 阅读 · 0 评论 -
内存对齐和分配原则
题目:Class O{ int i; byte j; String s; } 占用多少个字节转载 2018-05-15 10:03:54 · 832 阅读 · 0 评论 -
Java 覆盖系统类:endorsed 技术
之前接触过 Java.ext.dirs 用于扩展jdk的系统库,那么 -Djava.endorsed.dirs 又有什么神奇的作用呢?java提供了endorsed技术:关于endorsed:可以的简单理解为-Djava.endorsed.dirs指定的目录面放置的jar文件,将有覆盖系统API的功能。可以牵强的理解为,将自己修改后的API打入到虚拟机指定的启动API中,取而代之。但是能够覆盖的类...转载 2018-05-21 18:11:03 · 417 阅读 · 0 评论