- 博客(9)
- 收藏
- 关注
原创 ConcurrentHashMap
是一个强大的线程安全哈希表实现,适用于多线程环境下的高并发数据存储和访问。它通过分段锁和细粒度的锁机制,提供了高效的并发性能,同时避免了完全锁定的问题。在使用时,需要根据具体的应用场景合理地选择和配置。是 Java 中的一个线程安全的哈希表实现,主要用于在多线程环境下高效地存储键值对。,以充分发挥其优势。例如,以下是一个使用。
2024-10-21 14:49:23
947
1
原创 HashMap是如何解决Hash冲突的
通过链地址法和精心设计的哈希函数来有效地处理哈希冲突,以保证在存储大量键值对时仍能保持较高的性能。例如,以下是一个简单的示意代码,展示了。
2024-10-21 14:44:18
881
原创 HashMap和HashTable的区别
在线程安全性、键和值的允许类型、性能等方面存在差异。在选择使用时,需要根据具体的应用场景来决定。如果需要线程安全,可以选择。如果在单线程环境下追求性能,可以选择。
2024-10-21 14:39:43
174
原创 JVM-调优
调优 JVM 需要根据具体的应用场景、硬件环境和性能需求进行不断的测试和调整。可以使用性能监控工具如 JConsole、VisualVM 等来观察 JVM 的运行状态和性能指标,以便更好地进行调优。
2024-10-19 17:54:57
670
原创 JVM-垃圾回收器
程序计数器相当于给这个对象定一个计数器,当这个对象有被其他对象或者变量调用的时候,这个程序计数器就会加一,计数器数字为0的对象默认当成垃圾处理。当然,这样做是有缺点的。比如说,两个对象相互调用的时候,但是这两个对象已经被我们抛弃了,jvm也不会把他们当作垃圾处理掉,所以才有了后面的可达性分析这一说。当内存空间不足的时候,会额外开辟一个空间,是原来空间的两倍,把不是垃圾对象放在右边,左边做清除释放。就是在碎片标记法的基础上,做了整理的操作,这样可以使空间碎片很好的被利用,但是,这里的搬运内存的开销很大。
2024-10-17 17:58:47
393
原创 JVM-Native和方法区
在JVM中,Native方法可以被声明为native,并且不需要实现任何Java代码,这种用 native 修饰的方法就是本地方法,这是使用 C 来实现的,然后一般这些方法都会放到一个叫做本地方法栈的区域。JNI提供了一组标准接口,使得Java程序可以调用本地方法,同时也提供了本地方法接口,以便本地方法库能够访问Java程序的数据和对象。总之,JVM的Native机制为Java程序提供了一个强大的接口,可以扩展Java平台的能力,并且与本地系统进行高效的交互。所以Java就产生了带有C和C++的程序。
2024-07-25 15:48:38
429
原创 JVM-沙箱安全机制
在类加载过程中,JVM会根据一定的规则,优先使用父类加载器来进行类加载,如果父类加载器无法完成类加载任务,则交由其子类加载器来处理。同时,也可以通过限制父类加载器的访问范围,防止恶意代码的注入和执行。例如,在处理未捕获的异常时,JVM会提供默认的异常处理器,用于捕获和处理未处理的异常,以防止恶意代码利用未处理的异常绕过安全控制。1、类加载器隔离(限制):JVM通过使用不同的类加载器来实现不同类之间的隔离,通过这种方式,JVM可以确保来自不受信任来源的类无法访问受保护的类和资源。
2024-07-25 15:22:51
898
原创 JVM-双亲委派机制
这时候开始考虑自己是否能加载这个类了,如果无法加载,会下往下走,每走到下一个加载器都会看看能不能加载这个类,一直到最底层,如果没有任何加载器能加载,就会抛出ClassNotFound的异常。原因:这个机制会一直往上找一直到Bootstrap classLoader加载器,基本上基础的类它都能够加载,所以说会让其他加载器没机会去加载,就可以防止病毒的入侵。双亲委派机制,首先要了解双亲是什么,它指的是类加载器先向上寻找,再向下加载的流程,类似于父母之间的关系,因此叫做”双亲委派模型“。
2024-07-24 18:12:37
347
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人