Tag:

jVisualvm中抽样和分析之间的区别

VisualVM有两个单独的选项卡用于采样和分析。 有人能帮我弄清VisualVM中采样和分析之间的区别吗?

如何分析.hprof文件?

我有一个生产服务器与以下标志运行: – XX:+ HeapDumpOnOutOfMemoryError 昨天晚上,当我们的服务器遇到堆错误时,它生成了一个java-38942.hprof文件。 事实certificate,该系统的开发人员知道的国旗,但没有办法从它得到任何有用的信息。 有任何想法吗?

.Net中的优先队列

我正在寻找一个优先级队列或堆数据结构的.NET实现 优先级队列是比简单sorting更灵活的数据结构,因为它们允许新元素以任意间隔进入系统。 将新工作插入优先级队列要比在每次到达时重新sorting所有内容要便宜得多。 基本优先级队列支持三个主要操作: 插入(Q,X)。 给定一个具有密钥k的项目x,将其插入优先级队列Q. 查找-最小(Q)。 返回指向其优先级队列Q中的键值小于其他键的项的指针。 删除 – 最小(Q)。 从优先级队列Q中删除其项最小的项 除非我看错了地方,否则框架中没有一个。 有人知道一个好的,还是应该滚我自己的?

如何构build堆是O(n)时间复杂度?

有人可以帮助解释如何build立一个堆是O(n)的复杂性? 插入一个项目到堆中是O(log n) ,并且插入被重复n / 2次(剩下的是叶子,并且不能违反heap属性)。 所以,这意味着复杂性应该是O(n log n) ,我想。 换句话说,对于我们“heapify”的每个项目,它有可能不得不为每个级别过滤一次堆(迄今为止)。 我错过了什么?

内存分配:堆栈还是堆?

我对堆栈与堆之间的内存分配基础感到困惑。 根据标准定义(每个人都说),所有的值types将被分配到一个堆栈,并且引用types将被放入堆中 。 现在考虑下面的例子: class MyClass { int myInt = 0; string myString = "Something"; } class Program { static void Main(string[] args) { MyClass m = new MyClass(); } } 现在,如何在C#中发生内存分配? MyClass的对象(即m )是否会被完全分配给堆? 那是int myInt和string myString都会去堆? 或者,该对象将被分成两部分,并且将被分配到两个存储位置,堆栈和堆?

移动窗口的最小值/最大值是否可以达到O(N)?

我有input数组A. A[0], A[1], … , A[N-1] 我想要返回B的函数Max(T,A)代表A的大小在上一个大小为T的移动窗口上的最大值 B[i+T] = Max(A[i], A[i+T]) 通过使用最大堆来跟踪当前移动窗口A [i]到A [i + T]的最大值,该algorithm产生O(N log(T))最坏的情况。 我想知道有没有更好的algorithm? 也许是一个O(N)algorithm

C ++中的“new”和“malloc”和“calloc”有什么区别?

“新”,“malloc”和“calloc”等家族的区别是什么? (什么时候)需要“新”以外的东西吗? 其中一个使用其他吗?

增加Scala的JVM堆大小?

我有一个Scala数据处理工具,这是一个java.lang.OutOfMemoryErrorexception失败。 这个工具需要在一个大的数据文件(我正在使用的那个文件超过700MB)上做一对夫妇传递,所以如果整个东西都可以存储在内存中,那将是很方便的。 我使用“scala”runner从命令行或Bash脚本运行该工具。 如何增加这个JVM堆大小? 我试过传递-Xmx1024m ,但是不能识别这个参数。 我正在使用每晚构build的Scala 2.8.0(r18678)。

在堆栈/堆创build对象?

以下代码在堆栈上创build一个对象: Object o; 在堆上创build对象时,我们可以使用: Object* o; o = new Object(); 而不是: Object* o = new Object(); 当我们将堆对象创build分成两行并在第二行调用构造函数( o = new object() )时,这是否意味着在第一行( Object* o )指针是在堆栈上创build的? 所以Object o把对象放在堆栈上,而Object* o把指针放在堆栈上的未来对象上? 我的第二个问题涉及到两行代码是否在类之外被调用。 我最近读( 全局内存pipe理在C堆栈或堆? )全局variables不包含在堆栈/堆,但实际上是另一部分内存? 如果是这样的话, Object* o创build一个指针,该指针位于内存的另一部分,并指向堆对象?

当程序退出时,是否有理由在C ++中调用delete?

在我的C ++ main函数中,例如,如果我有一个指向使用堆内存(而不是堆栈内存)的variables的指针 – 这是我的应用程序退出后自动释放? 我会这样认为的。 即使如此,即使您认为在退出时自动释放内存的情况下永远不会使用堆分配,也是一种很好的做法吗? 例如,有没有这样做的意义? int main(…) { A* a = new A(); a->DoSomething(); delete a; return 0; } 我在想也许万一我重构(或其他人重构)的代码,并将其放在应用程序的其他地方,其中delete是真的neccecary。 除了Brian R. Bondy(专门讨论C ++中的含义)的答案外 ,Paul Tomblin 对C特定的问题也有很好的回答,这个问题也谈到了C ++析构函数。