2 通过套接字与共享内存进行进程间通信的优缺点是什么? 我了解进程间通信的许多其他选项中的两个可以是: 共享内存 插座 实际上,我看到Intellij Idea公开了这两个选项,用于调试Java应用程序。我想知道每种方法的优缺点。 9 language-agnostic debugging memory sockets process
1 为什么在Java中分配对象/数组时会产生开销? Java中数组占用多少字节?假设这是一台64位计算机,并且还假设一个数组中有N个元素,那么对于不同类型的数组,所有这些元素将占用2 * N,4 * N或8 * N个字节。 在Coursera的一次演讲中说,对于一个N元素数组,它将占用2 * N + 24、4 * N + 24或8 * N + 24个字节,而这24个字节称为开销,但没有说明为什么开销是需要。 对象也有开销,为16个字节。 这些间接费用到底是什么?这些24/16字节由什么组成? 另外,这些开销仅存在于Java中吗?C,C ++和Python呢? 9 java memory
4 分析内存使用情况:Java与C ++可以忽略不计? 用Java编写的整数对象的内存使用情况与用C ++编写的整数对象的内存使用情况如何比较\对比?差异可忽略不计吗?没有不同?有很大的不同吗?我猜是一样的,因为int是int而不管语言(?) 我之所以这样问,是因为我正在阅读了解何时知道程序的内存需求将阻止程序员解决给定问题的重要性。 让我着迷的是创建单个Java对象所需的内存量。以一个整数对象为例。如果我错了,请纠正我,但是Java整数对象需要24个字节的内存: 4个字节的int实例变量 16字节的开销(引用对象的类,垃圾收集信息和同步信息) 4字节的填充 再举一个例子,Java数组(作为对象实现)需要48个字节以上: 标头信息的24个字节 16个字节的对象开销 4个字节的长度 4个字节用于填充 加上存储值所需的内存 与使用C ++编写的相同代码相比,这些内存使用情况如何? 我过去对编写的C ++和Java程序的内存使用情况一无所知,但是现在,我开始学习算法,对计算机的资源有了更大的了解。 9 java c++ algorithms data-structures memory
3 如何以适当的方式监视JVM内存? 我正在考虑如何在生产环境中以繁忙的时间以低开销的方式进行JVM内存监视。 假设我有两个生产中的tomcat应用服务器,并在它们后面设置了负载平衡。如果可以看到jvm内存统计信息,则可以告诉负载平衡停止将请求发送到服务器,这将遇到OOM问题。这有意义吗?Jconsole或VisualVM占用更多性能资源不是我的选择。 9 java performance memory
3 自定义堆分配器 大多数程序在堆分配方面可能很随意,甚至在某种程度上,功能性编程语言更喜欢分配新对象而不是修改旧对象,并使垃圾回收者担心释放对象。 但是,在嵌入式编程中,静默扇区中,由于内存和实时限制,在许多应用程序中根本无法使用堆分配。每种类型将要处理的对象数量是规范的一部分,并且所有内容都是静态分配的。 游戏编程(至少对于那些雄心勃勃地致力于推动硬件发展的游戏)有时介于两者之间:您可以使用动态分配,但有足够的内存和软实时约束,因此您不能将分配器视为黑匣子,更不用说使用垃圾回收了,所以您必须使用自定义分配器。这是C ++仍在游戏行业中广泛使用的原因之一。它可以让您执行以下操作:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html 在这两个领土之间还有哪些其他域?除游戏外,在哪里大量使用自定义分配器? 9 c++ embedded-systems memory heap