学Java的第一天我们就知道Java是一种跨平台的语言,虽然当时可能是懵懵懂懂,但是「一次编译,到处运行」的特性想必是给众多Javaer留下了不可磨灭的印象。...
静态方法(实际上是所有方法)以及静态变量都存储在PermGen堆的部分中,因为它们是反射数据(与类相关的数据,而不与实例相关的数据)的一部分。
本文作者系肖遥(花名),现任甲骨文技术支持工程师 ,目前专注于Oracle RAC领域。个人主页:
我平时用的也挺频繁,这次就借助日常使用的 Cache 组件来看看 Google 大牛们是如何设计的。
两个线程通过对同一对象调用等待 wait() 和通知 notify() 方法来进行通讯。
由于 Java 内存模型( JMM)规定,所有的变量都存放在主内存中,而每个线程都有着自己的工作内存(高速缓存)。
当 JVM 收到一个 new 指令时,会检查指令中的参数在常量池是否有这个符号的引用,还会检查该类是否已经被加载过了,如果没有的话则要进行一次类加载。...
获得ClassLoader的几种方法可以通过如下3种方法得到ClassLoader this.getClass().getClassLoader(); // 使用当前类的ClassLoader Thread.currentThread().getContextClassLoader(); // 使用当前......
对象分配过程:TLAB(Thread Local Allocation Buffer)
每个线程:独立包括程序计数器、栈、本地栈 线程间共享:堆、堆外内存(永久代活元空间、代码缓存)